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

Passing a external variable in JSON.parse function

本文关键字:外部 变量 JSON parse 函数      更新时间:2023-09-26

我正在尝试使用 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"
      }],
    }
  }
}

如果我这样做,我可以得到值 10 JSON.parse(obj.rows)但是如果我将行分配给一个变量,比如var value = rows,然后将其传递给我得到undefinedJSON.parse(obj.value)函数。

附言我不会知道响应参数的名称,即我不知道它是rows还是os引用上面的示例。我将从数据库中检索它们。如果我执行以下代码:

  for (var i=0;i<length;i++) {
    var value = responseParam_array[i];
    console.log(obj.value);
  }

我得到了输出,但任何帮助将不胜感激。

根据其他答案,您不需要解析单个属性,只需解析原始 JSON,然后对生成的对象进行操作。

但至于这个问题:

"如果我将行分配给一个变量,比如var value = rows,然后将其传递给我得到undefinedJSON.parse(obj.value)函数"

如果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;