【问题标题】:Get specific fields in JSON获取 JSON 中的特定字段
【发布时间】:2016-04-29 01:47:24
【问题描述】:

我在 NodeJS 中获取一些 JSON 字段时遇到问题。 这是我的 JSON 结构:

{
    "header":
    {
        "file1":0,
        "file2":1,
        "subfiles":{
          "subfile1":"true",
          "subfile2":"true",
        }
    },

    "response":
    {
        "number":678,
        "start":0,
        "docs":[
            {
                "id":"d3f3d",
                "code":"l876s",
                "country_name":"United States",
                "city":"LA"
            },
            {
                "id":"d2f2d",
                "code":"2343g",
                "country_name":"UK",
                "city":"London"
            }
        ]
    }
}

如何在这样的结构中访问特定字段(id、city 或 country_name)? 我正在 NodeJS 中尝试一些东西,但我无法获取特定字段。

request('http://url.com', function (error, res, body) {
  if (!error && res.statusCode == 200) {
    console.log(body) 
  }

    res.on('data', function(chunk){
        body += chunk;
    });

    res.on('end', function(){
        var urlResponse = JSON.parse(body);
        console.log("Got a response: ", urlResponse.response.docs.city);
    });
});

【问题讨论】:

  • 你有一个“文档”数组,所以你必须选择一个。

标签: json node.js


【解决方案1】:

你有没有尝试过这样的事情:

thatObject.response.docs.forEach((element) => { console.log( element.id ); });

?

property docks 是一个数组,所以你可以使用函数:forEach 或 for 或任何你想要的

【讨论】:

  • 我正在尝试使用 for(var i = 0; i < data.response.docs.length; i++){ var post = data.response.docs[i]; console.log(post); },但出现无法读取未定义错误的属性“文档”
  • 嘿!看起来您使用请求模块?我从未使用过它,但尝试这样的事情:(如何在这里开始写一个新行?;))用body替换data
【解决方案2】:

尝试使用data 变量来累积您的块,然后data.toString() 将缓冲的内容强制为字符串,这将是可解析的JSON。

另外,您需要访问docs 数组的特定成员。

【讨论】:

  • 我可以用 JSON.stringify(body) 代替 toString() 吗?
  • 否,因为内容已缓冲。在解析为 JSON 之前,您需要将该缓冲内容转换为字符串。
  • 如果它解决了你的问题@corry,你能接受这个答案吗?
  • 你的回答有帮助,但我还是没有解决问题。谢谢
  • 请更新您的示例并说明您仍然遇到问题的地方。 @corry
猜你喜欢
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多