如何在服务器端解析JSON对象?

时间:2019-11-27 21:10:32

标签: json reactjs parsing

如果我发送这样的对象,我试图使用后请求将数据从响应发送到服务器(本地rest API):

{key:"value"}

然后我在服务器上得到它:

{ '{"key":"value"}': '' }

它将整个对象转换为键值对。 我该如何解决这个问题?

axios.post('http://localhost:5000/animals', JSON.stringify(data))
  .then((response)=>{
    console.log(response);
  });

如果我不进行字符串化,则在服务器上会得到一个空对象,但是如果我进行字符串化,则将得到如上所述的这种对象。有什么办法可以将其转换回普通对象?

2 个答案:

答案 0 :(得分:1)

服务器似乎希望以application/x-www-form-urlencoded编码而不是application/json编码获取数据。

为什么?

application/x-www-form-urlencoded编码数据看起来像

key1=value1&key2=value2&....

但是值是可选的,所以

key1&key2=value2

也可以。

您正在向服务器发送{"key":"value"},它看起来像是没有值的密钥。由于您似乎可以控制服务器,因此请更改服务器实现,以将请求正文解析为JSON。如何执行此操作取决于您在服务器上使用的框架。

如果您使用的是express.js,请使用bodyParser.json()。或者,按照Chinedu的建议,发送经过application/x-www-form-urlencoded编码的数据(而不是JSON)。

答案 1 :(得分:0)

使用axios执行POST请求

axios.post('/user', {
 firstName: 'Fred',
 lastName: 'Flintstone'
})
.then(function (response) {
 console.log(response);
})
.catch(function (error) {
 console.log(error);
});

您能否尝试构建要作为上述检查发送的数据,发送到您的api并查看虚拟数据是否到来。无需json解析或stringfy。 您是否在Node.js Express应用程序中使用主体解析器中间件?