当循环为空时,为什么For循环返回'arg'

时间:2016-04-12 09:19:13

标签: javascript json blackberry-10

我正在迭代JSON对象

我的JSON结构是这样的

  

{ “someinfo”:{ “参数”:{ “ABC”: “123”, “XYZ”: “456”}}}

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

}
当填充JSON中的“参数”时,

上面的循环将返回正确的值。

如果为空,则会打印 arg

JSON中的空'参数'看起来像:

  

{ “someinfo”:{ “参数”: “”}}}

为了在空或非空时打印正确的值,在for-in循环中有任何方法

2 个答案:

答案 0 :(得分:1)

已填充ParameterobjectParameterstring

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
}

答案 1 :(得分: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)
}