Node.JS中的JSON POST数据序列化为数组

时间:2018-10-05 16:47:56

标签: javascript json node.js express post

尝试从我的前端表单获取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不够了解,无法尝试学习。

谢谢

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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 :(得分:1)

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

    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);
    }