我期望来自 webhook 的 json 数据如下所示:
{"request": {"authentication": {"password": "1p2r9o6d4u5t1c","partnerid": "1296451"},"method": {"name": "SubmitUserTestResult","user_id": "3", "transcript_id": "5012658", "test_id": "10155", "test_name": "Productive People Quality Assurance Associate Test", "percentage": "8", "percentile": "73", "average_score": "8", "test_result": "FAIL", "reporturl": "http://assessments.getqualified.work/CreateNewPdf.aspx?transcriptid': '5012658", "time": "2017-11-08T06:56:22Z"}}}
但是,它的两端都有一个额外的大括号,如下所示:
{ '{"request": {"authentication": {"password": "1p2r9o6d4u5t1c","partnerid": "1296451"},"method": {"name": "SubmitUserTestResult","user_id": "3", "transcript_id": "5012658", "test_id": "10155", "test_name": "Productive People Quality Assurance Associate Test", "percentage": "8", "percentile": "73", "average_score": "8", "test_result": "FAIL", "reporturl": "http://assessments.getqualified.work/CreateNewPdf.aspx?transcriptid': '5012658", "time": "2017-11-08T06:56:22Z"}}}' }
我的代码如下所示:
receiveResult: function(req, res) {
console.log(req.body);
}
由于该数据看起来不像有效的 json,我如何访问它?
最佳答案
您应该使用正则表达式来获得您想要的结果。尝试以下操作:
const regex = /(?:({"))[\s\S]*(?=('\s*}))/g;
const str = `{ '{"request": {"authentication": {"password": "1p2r9o6d4u5t1c","partnerid": "1296451"},"method": {"name": "SubmitUserTestResult","user_id": "3", "transcript_id": "5012658", "test_id": "10155", "test_name": "Productive People Quality Assurance Associate Test", "percentage": "8", "percentile": "73", "average_score": "8", "test_result": "FAIL", "reporturl": "http://assessments.getqualified.work/CreateNewPdf.aspx?transcriptid': '5012658", "time": "2017-11-08T06:56:22Z"}}}' }`;
let data = JSON.parse(str.match(regex)[0]);
console.log(data);
关于json - 如何使用附加大括号访问 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47197886/