Чтение объекта в json с помощью jquery

У меня ниже json, который я получаю от Remote.

{

    "name":"planning Diet",
    "day1":{
        "morning":"chicken",
        "evening":"mutton",
        "night":"Juice"
    },
    "day2":{
        "morning":"burger",
        "evening":"pizza",
        "night":"Juice",
        "late night":"water"
    }

}

Ниже то, что я пробовал.

$.getJSON("http://domain.com/hello.json",function(result){
  $.each(result, function(i, field)
{
console.log(field);
});

Это возвращает что-то вроде

"planning diet"
[object object]
[object object]

Теперь, как я могу пройти или пройти через весь объект ...?


person Vishnu    schedule 04.02.2014    source источник
comment
@oGeez: мне нужно добавить все эти элементы в свои элементы html!   -  person Vishnu    schedule 04.02.2014
comment
@Cerbrus: на этот URL-адрес есть ответы, что действительно сложно! Я ожидаю легкого решения.   -  person Vishnu    schedule 04.02.2014


Ответы (5)


В вашем случае вы можете использовать что-то вроде этого,

$.getJSON("http://domain.com/hello.json", function(result) {
    $.each(result, function(i, field) {
        if (typeof field == "object") {
            console.log(i);  
            $.each(field, function(i, f) {
                console.log(f);
            });
        }
        else {
            console.log(field);
        }
    });
});

Вы можете использовать typeof field == "object", чтобы проверить, является ли текущий элемент объектом или нет

person Pranav C Balan    schedule 04.02.2014
comment
идеально ! скоро приму - person Vishnu; 04.02.2014
comment
Привет ! как я могу получить имя объекта? это день 1 и день 2? - person Vishnu; 04.02.2014
comment
используйте переменную i внутри, если условие - person Pranav C Balan; 04.02.2014
comment
поле где ?? console.log (поле) дает объект-объект - person Vishnu; 04.02.2014
comment
попробуйте console.log(i) внутри, если - person Pranav C Balan; 04.02.2014
comment
нет его возвращаемое имя - person Vishnu; 04.02.2014
comment
подождите, я дам вам пример скрипки - person Pranav C Balan; 04.02.2014
comment
Вы можете отредактировать свое решение, пожалуйста - person Vishnu; 04.02.2014
comment
jsfiddle.net/pranavcbalan/ZmzUB/2 - person Pranav C Balan; 04.02.2014
comment
jsfiddle.net/pranavcbalan/ZmzUB/3 - person Pranav C Balan; 04.02.2014

Вам нужна функция с рекурсивным циклом, как показано ниже:

function getValues(obj) {
    if(typeof obj== "object") {
        $.each(obj, function(key,value) {
            getValues(value);
        });
    }
    else {
       console.log(obj);
    } 
}

Вот что вы в основном делаете:

1) Iterate over the json item, check if item is an object. 
2) If so,iterate over this new object, else print the value. 
3) This goes on till all the values are printed and whole json structure is iterated.

Параметром функции должен быть json, который вы получаете из удаленного места.

person Pruthvi Raj Nadimpalli    schedule 04.02.2014
comment
+1 за объяснение :) - person Vishnu; 04.02.2014

function traverse(obj){
   for(prop in obj){
       if(typeof obj[prop] === "object"){
           traverse(obj[prop]);
       }else{
          console.log(obj[prop]);
       }
   }
}

JS Fiddle: http://jsfiddle.net/Rbs9A/

person Kevin Bowersox    schedule 04.02.2014

Вам нужно выполнить цикл с $.each() только тогда, когда у вас есть [{},{},{}...] массив из нескольких объектов, но в вашем случае у вас есть просто объект, который содержит другой объект, поэтому вам не нужно выполнять какие-либо итерации в цикле. Вы можете сослаться на его keys:

$.getJSON("http://domain.com/hello.json",function(result){
   console.log(result); // gives you your object
   console.log(result.name); // gives you you "planning Diet"

   console.log(result.day1.morning); // gives you you "chicken"
});
person Jai    schedule 04.02.2014

Попробуй, field.day1.morning

data=[{

    "name":"planning Diet",
    "day1":{
        "morning":"chicken",
        "evening":"mutton",
        "night":"Juice"
    },
    "day2":{
        "morning":"burger",
        "evening":"pizza",
        "night":"Juice",
        "late night":"water"
    }

}]
$.each(data, function(i, field){
alert(field.day1.morning)
})

Демо http://jsfiddle.net/Aj9eJ/

person dhana    schedule 04.02.2014
comment
нет, это не переход ... он просто получает конкретный элемент из json - person Vishnu; 04.02.2014