2016-04-12 2 views
1

Я итерация объекта JSONПочему прощают в «арг» возвращает петлю, когда цикл пуст

Моя JSON структура что-то вроде этого

{ «someinfo»: { «Параметр»: { "ABC": "123", "XYZ": "456"}}}

for (var tempVal in jsonObj.someinfo.Parameter) { 
//print tempval 

} 

выше цикла будет возвращать правильные значения, когда 'Параметр' в JSON заполнен.

Если пусто будет печататься агд

Пустой 'Параметр' в формате JSON будет выглядеть следующим образом:

{ "someinfo": { "Параметр": ""}}}

для того, чтобы печатать правильные значения, когда пусто или не пусто, есть ли способ в для- в цикле

+0

Вы говорите о состоянии 'if'? – Rayon

+0

Я бы сказал, что ваш параметр json неверен. Это должен быть объект или null. Не объект или пустая строка. – RvdK

+0

Хорошо. У меня нет контроля над содержимым или форматом файла JSON. Итак, в состоянии выше, что лучше всего можно сделать? –

ответ

1

заполнены Parameter является object пустой Parameter является string

var jsonObj1={"someinfo":{"Parameter":{"ABC":"123","xyz":"456"}}}; 
 
var jsonObj2={"someinfo":{"Parameter":""}}; 
 
alert("Full: "+typeof jsonObj1.someinfo.Parameter+" ---- Empty: "+typeof jsonObj2.someinfo.Parameter)

вы не можете "цикл в строке" поэтому, если вы либо измените свой JSON, либо протестируйте его так:

if (typeof jsonObj1.someinfo.Parameter==="object") { 
    for (var tempVal in jsonObj.someinfo.Parameter) { 
    //print tempval 
    } 
} else { 
    //empty 
} 
0

Вы могли бы просто проверить, если jsonObj.someinfo.Parameter является объектом, как это:

var json = {"someinfo":{"Parameter":{"ABC":"123","xyz":"456"}}}; 

if(typeof json.someinfo.Parameter === "object") { 
    for(var key in json.someinfo.Parameter) { 
    // print key 
    } 
} else { 
    // Do something when it is not an object (empty) 
} 
Смежные вопросы