【问题标题】:How to iterate JSON data in a Node Js app如何在 Node Js 应用程序中迭代 JSON 数据
【发布时间】:2020-12-06 13:09:24
【问题描述】:

我在 Node Js 应用程序中使用 .foreach 迭代 JSON 数据时遇到问题。 JSON 内容如下所示,

{
"JR":{"James$James.Albert$string":"11","John$John.Ab$string":"22"},
"US":{"Philip$Philip.Jose$string":"44","Maichel$Maichel.Kim$string":"33"}
}

我已使用以下代码集进行迭代但出现错误:位置 1 处 JSON 中的意外标记 o

JSON.parse(rfcData).each((index, variable) => {
   log.info(" ############  IIIIIII ########### ",index);
    log.info(" ############  IIIIIII ########### ", variable);

});
JSON.parse(rfcData).forEach((index, variable) => {
  log.info(" ############  IIIIIII ########### ",index);
    log.info(" ############  IIIIIII ########### ", variable);

});

任何人都可以帮忙,让我知道我是否出错了。

提前致谢

【问题讨论】:

  • 嗯,rfcData 中的 JSON 显然有问题。您可以将确切的 JSON 粘贴到此验证器 jsonlint.comfreeformatter.com/json-validator.html 中。此外,您在问题中显示的 JSON 不是数组(它是一个对象),因此您不能使用 .forEach().each() 根本不是 Javascript 方法。您报告的错误似乎表明 rfcData 中的内容与您在问题中显示的内容不同,因为该错误与您在此处显示的内容不符。
  • 解决 JSON 解析问题后,您可以使用 for (const [key, value] of Object.entries(parsedRfcData)) { console.log(`${key}: {value}`); } 迭代对象的键/值
  • 请更新您的帖子,并提供给您Unexpected token o in JSON at position 1 的实际示例。请看 billobeng 的回复below。如果有帮助,请“点赞”和/或“接受”它。

标签: node.js json iteration


【解决方案1】:

您的示例中 json.parse 返回的对象没有“.each”或“.forEach”方法,请改用此方法

const json = JSON.stringify({
  "JR":{"James$James.Albert$string":"11", "John$John.Ab$string":"22"},
  "US":{"Philip$Philip.Jose$string":"44","Maichel$Maichel.Kim$string":"33"}
})

Object.keys(JSON.parse(json)).forEach(value=>{
  log.info(value)
})

使用Object.keys

【讨论】:

  • 如果对象是一个 JSON 数组,它会在 JSON.parse 之后有 .forEach 等
  • 是的,编辑了我的答案以反映我指的是他提供的数据
  • 我尝试了您的选择并且能够获得 "JR" 和 "US" 。我怎样才能得到值 {"James$James.Albert$string":"11", "John$John.Ab$string":"22"}
  • 您可以将 JSON.parse(json) 分配给一个变量,然后访问 forEach 函数中的值
【解决方案2】:

您尝试迭代的 JSON 的结构不是数组,因此您不能使用 eachforEachmap 函数进行循环。相反,您需要遍历已解析的 Object 的键。

Object.keys(JSON.parse(yourJSON)).map(value=>{
  log.info(value)
})

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 2012-07-19
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 2020-08-23
    • 2019-04-28
    • 1970-01-01
    • 2021-08-07
    相关资源
    最近更新 更多