我正在尝试使用JSON.parse
函数从json获取值。我的json响应如下:
{
"rows": 10,
"os": "0",
"page": "1",
"total": "122",
"projects": {
"P143841": {
"id": "P143841",
"locations": [{
"geoLocId": "0002220957",
"latitude": "3.866667",
"longitude": "11.516667"
}],
}
}
}
如果执行JSON.parse(obj.rows)
,我就可以得到10,但是如果我将行分配给变量,例如var value = rows
,然后将其传递给JSON.parse(obj.value)
函数,则得到undefined
。
P.S。我将不知道响应参数的名称,即我不知道上面示例引用的是rows
还是os
。我将从数据库中检索它们。如果我执行以下代码:
for (var i=0;i<length;i++) {
var value = responseParam_array[i];
console.log(obj.value);
}
我得到了输出,但是任何帮助将不胜感激。
根据其他答案,您不需要解析单个属性,只需解析原始JSON,然后对结果对象进行操作。
但是关于这个问题:
“如果我将行分配给变量,则说]
var value = rows
然后将其传递给JSON.parse(obj.value)
得到的函数undefined
”
如果value
是一个持有obj
属性名称的变量,那么您需要:
obj[value]
// NOT
obj.value
当使用“点”表示法时,点右侧的部分被视为属性的文字名称,而不是变量。使用方括号语法对括号中的表达式进行求值,并将其结果用作属性名称。
您应该先对整个对象进行json解析,然后再使用解析的对象(您不需要自己解析每个属性)
var strObj = '{"rows": 10,"os": "0","page": "1","total": "122","projects":{"P143841":{"id":"P143841",}}';
var obj = JSON.parse(strObj);
var rows = obj.rows;
如果我理解您的问题:
var str = '{ "some": "JSON String like the one above with", "rows": 10 }';
var parsed = JSON.parse(str);
var whatYouWant = parsed.rows;