【问题标题】:JSON POST data in Node.JS serialized as arrayNode.JS 中的 JSON POST 数据序列化为数组
【发布时间】:2019-03-11 05:25:28
【问题描述】:

试图从我的前端表单中获取 POST 数据。当我运行console.log(req.body) 时,我得到以下信息:

[ { name: 'name', value: 'kevin' }
  { name: 'email', value: '' },
  { name: 'phone', value: '' },
  { name: 'message', value: '' } ]

问题:我在console.log(req.body.name) 上的当前输出是:Undefined

预期输出为:kevin

有人可以解释为什么会发生这种情况以及我可以做些什么来避免吗?我对 JSON 的了解不够,我正在努力学习。

谢谢

【问题讨论】:

  • 因为,req.body 是一个数组,你必须遍历每个元素,或者,(不好的方式)req.body[0].name

标签: javascript json node.js express post


【解决方案1】:

谁能解释一下为什么会发生这种情况以及我可以做些什么来避免?

尝试以这种方式使用forEach() 获取名称/值,因为您req.bodyarray of object,因此您必须对其进行迭代并从中获取名称或值,如下所示并避免undefined 输出。另外,如果您只想从array of object 中获取任何特定名称/值,请尝试这样,而无需 forEach 循环 req.body[0].namereq.body[0].value。希望你现在明白了:)

const array_of_obj = [{
    name: 'name',
    value: 'kevin'
  }, {
    name: 'email',
    value: ''
  },
  {
    name: 'phone',
    value: ''
  },
  {
    name: 'message',
    value: ''
  }
];

array_of_obj.forEach((elm) => {
  console.log(`name = ${elm.name} and value = ${elm.value}`);
})

【讨论】:

    【解决方案2】:

    req.body 将是一个对象数组。对于常规的 for 循环,您需要使用 forEach 对其进行迭代并获取值。

    如果您只想从第一个对象中获取元素,请执行req.body[0].name 其中[0] 是索引

    【讨论】:

      【解决方案3】:

      查看我创建的这个示例。希望这会有所帮助

          var json1 = {"players":[
                {"name":"Messi", "goals":8},
                {"name":"Ronaldo", "goals":22},
                {"name":"Costa", "goals":20},
                {"name":"Neymar", "goals":13},
                {"name":"Arabi", "goals":6},
                {"name":"Bale", "goals":3},
                {"name":"Toquero", "goals":0}]};
          console.log(json1.players[0]);
          for(let item of json1.players){
           console.log(item);
          }
      

      【讨论】:

        猜你喜欢
        • 2011-10-14
        • 2012-03-08
        • 1970-01-01
        • 1970-01-01
        • 2011-09-21
        • 1970-01-01
        • 2021-02-07
        • 1970-01-01
        • 2016-08-20
        相关资源
        最近更新 更多