您好我试图通过使用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)
函数{ {1}}。
P.S我不知道响应参数的名称(即)如果我引用上面的例子,我不会知道它是行还是os。我将从数据库中检索它们 如果我执行以下代码
undefined
我得到了输出但是。非常感谢任何帮助。
答案 0 :(得分:3)
根据其他答案,您不需要解析单个属性,只需解析原始JSON,然后对生成的对象进行操作。
但至于这个问题:
“如果我将行分配给变量说
var value = rows
然后我将其传递给我获得的JSON.parse(obj.value)
函数undefined
“
如果value
是一个包含obj
属性名称的变量,那么您需要:
obj[value]
// NOT
obj.value
当您使用“点”表示法时,点右侧的部分将被视为属性的文字名称,而不是变量。使用方括号语法计算括号中的表达式,并将其结果作为属性名称。
答案 1 :(得分:1)
如果我理解你的问题:
var str = '{ "some": "JSON String like the one above with", "rows": 10 }';
var parsed = JSON.parse(str);
var whatYouWant = parsed.rows;
答案 2 :(得分:1)
你应该json解析你的整个对象并在之后使用解析的对象(你不需要为自己解析每个属性)
var strObj = '{"rows": 10,"os": "0","page": "1","total": "122","projects":{"P143841":{"id":"P143841",}}';
var obj = JSON.parse(strObj);
var rows = obj.rows;