在JSON.parse函数中传递外部变量

时间:2013-01-22 10:40:48

标签: javascript json node.js

您好我试图通过使用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

我得到了输出但是。非常感谢任何帮助。

3 个答案:

答案 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;