json - 无法从 NodeJS 中的 JSON 响应获取值

标签 json node.js mongodb

我正在尝试检查从查询返回的值。此结果为 JSON 格式。我的代码一直有效,直到我的条件语句。
在调试时,我发现我的条件语句总是失败,因为我尝试从 JSON 检索并比较的值始终未定义。

var promise = insertDataInMongo([body, token]);
var newBody = JSON.parse(body);

if (newBody.paging.facebookPost !== -1 || newBody.paging.youtube !== -1 || newBody.paging.twitter !== -1 || newBody.paging.facebook !== -1 || newBody.paging.reddit !== -1 || newBody.paging.youtubeComment !== -1 || newBody.paging.news !== -1)
    promise.then(getAthleteMedia([athlete, token, newBody.paging.facebook, newBody.paging.facebookPost, newBody.paging.reddit, newBody.paging.youtube, newBody.paging.youtubeComment, newBody.paging.twitter, newBody.paging.news]))

返回的正文如下所示:

{ "paging": [
{
  "youtubeComment": -1
},
{
  "youtube": -1
},
{
  "twitter": -1
},
{
  "facebook": -1
},
{
  "reddit": -1
},
{
  "facebookPost": -1
},
{
  "news": -1
}
]}

当我调试时,我看到以下内容:

JSON Values

但是,解析值显示为:

Parsed values

非常感谢任何帮助。谢谢,

最佳答案

您收到的是对象数组而不是对象的对象,因此您应该首先使用索引然后使用属性来访问它们。 假设 JSON 响应的格式始终相同,这是有效的 JSfiddle链接和下面是受此启发的示例代码 How to get index of object by its property in javascript帖子answer .

var newBody = {
  "paging": [{
    "youtubeComment": -1
  }, {
    "youtube": -1
  }, {
    "twitter": -1
  }, {
    "facebook": -1
  }, {
    "reddit": -1
  }, {
    "facebookPost": -1
  }, {
    "news": -1
  }]
};


function check(array, attr, value) {
  for (var i = 0; i < array.length; i += 1) {
    if (array[i][attr] === value) {
      return false;
    }
  }
  return true;
}

function get_value(array, attr) {
  for (var i = 0; i < array.length; i += 1) {
    if (array[i].hasOwnProperty(attr)) {
      return array[i][attr];
    }
  }
}

if (check(newBody.paging, "facebook", -1) || check(newBody.paging, "youtubeComment", -1) || check(newBody.paging, "youtube", -1) || check(newBody.paging, "twitter", -1) || check(newBody.paging, "reddit", -1) || check(newBody.paging, "facebookPost", -1) || check(newBody.paging, "news", -1)) {
  // promise.then(getAthleteMedia([athlete, token, get_value(newBody.paging, "facebook"), ... get_value(newBody.paging, "news")]));
  // similarly just pass the function in your promise, hope it clears how to get the values as well
  console.log(get_value(newBody.paging, "facebook"));

} else console.log("not in if");

关于json - 无法从 NodeJS 中的 JSON 响应获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43363370/

相关文章:

json - 使用 -jsonArray 时 mongoimport 的速度非常慢

javascript - 数据表-未捕获的类型错误 : Cannot read property 'length' of undefined

javascript - JSON在动态添加元素后排序

php - Class::save() 的声明应该与 Class::save() 的声明兼容

javascript - 如何解析通过 ajax 请求发送的多部分/表单数据。?

javascript - 函数的长度属性

collections - MongoDB - 如何从集合中查询嵌入文档

ios - 使用 URLSession 和 Codable 解析 JSON 数据

Android Flickr Json 缓存图像

python - 将 bcrypt 添加到 package.json 时,如何使用 docker node alpine Image 解决 "Could not find any Python installation to use"?