Node.js 如何使用axios中的json字符串执行操作?

Node.js 如何使用axios中的json字符串执行操作?,node.js,json,axios,Node.js,Json,Axios,背景 我正在使用axios从前端HTML文件传递变量 var idToken1=result.getIdToken(); axios({ 方法:“post”, url:“/试用版”, 数据:idToken1, 标题:{'Content-Type':'application/x-www-form-urlencoded'} }) .然后(功能(响应){ //成功 控制台日志(响应); }) .catch(函数(响应){ //处理错误 控制台日志(响应); }); 在我的app.js中的route

背景

我正在使用axios从前端HTML文件传递变量

var idToken1=result.getIdToken();
axios({
方法:“post”,
url:“/试用版”,
数据:idToken1,
标题:{'Content-Type':'application/x-www-form-urlencoded'}
})
.然后(功能(响应){
//成功
控制台日志(响应);
})
.catch(函数(响应){
//处理错误
控制台日志(响应);
});
在我的app.js中的route get this as output下,这里所有的值都存在于key中,key value为空。所以我想我需要一种先解析这些键的方法

 {
      '{"payload":{"cognito:username":"jatin","exp":1620965984,"iat":1620962384,"email":"xxxx@gmail.com"}}': ''
    }
我想提取
“电子邮件”:xxxx@gmail.com“

更新:在app.js中,我已经在使用express原生解析器app.use(express.json());use(express.urlencoded({extended:true}))`

A如果要将http正文作为对象获取:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}));
然后,您可以使用
req.body
获取html web发送的http正文:

app.post('/trial', function(req, res) {
  var email = req.body.payload.email;
  //etc
});

问题出在
axios
上。axios需要将对象作为json对象发送。 var idToken1=result.getIdToken()

以下代码将在我的后端生成正确的JSON对象

axios({
  method: 'post',
  url: '/trial',
  data: { idToken: idToken1 },
  headers: { 'Content-Type': 'application/json' }
})
.then(function (response) {
  //handle success
  console.log(response);
})
.catch(function (response) {
  //handle error
  console.log(response);
});

我已经在使用app.use(express.json());use(express.urlencoded({extended:true}))更新我的问题顺序非常重要。看看这个示例,我也更正了我的订单,但是当我执行req.body.payload时,它在控制台中显示为undefined。你检查过我的json字符串了吗?它的一般形式是
{''{“payload”:{“cognito:username”:“jatin”,“exp”:1620965984,“iat”:1620962384,“email”:xxxx@gmail.com“}}':”'}
。这里所有的值都存在于键值中,键值为空。所以我想我需要一种方法首先解析这些键?正如您所看到的,x-www-form-urlencoded用于发送key=value,而不是用于复杂对象。您正在发送
数据:idToken1
,其中
idToken1
是一个对象。您有两个选项:#1使用application/json作为内容类型,或#2在使用axios发送之前将idToken1转换为key=value。建议:使用postman测试您的/trial,以验证错误是在您的axios端还是在/trialSO中。您的#1方法返回空对象,但是#2对我来说很有效。