node.js - 使用 JSON.stringify() 和 JSON.parse() 无法获得正确的结果
问题描述
尝试从 API 检索数据并将它们用作对象。问题是在 JSON.parse() 之后我没有得到正确的结果,而且我不知道如何访问数据(不知道检索特定数据的索引或参数)。
使用 axios 在 Express 中的功能:
var result_post = axios.post(url_post, post_data, post_config);
result_post.then(function (res){
//console.log("RESPONSE: ", res);
json_result_post = res['data'];
json_result_post = JSON.stringify(json_result_post, null, 2);
json_result_post_parse = JSON.parse(json_result_post);
console.log(json_result_post_parse);
//cconsole.log(json_result_post);
fs.writeFile("data_post.json", json_result_post, function(err){
if(err){
console.log(err);
}
});
//json_result_post_parse = JSON.parse(json_result_post);
//console.log("RESPONSE: ", res);
})
.catch(function (err){
console.log("AXIOS ERROR: ", err);
});
JSON.stringify() 之后的一些数据:
{
"body-json": {
"emp_no": 80000,
"email": "80000@cloud-spartan.com",
"first_name": "Odoardo",
"last_name": "Ranft",
"birth_date": "1963-06-23",
"gender": "F",
"hire_date": "1994-07-03",
"salaries": [
{
"salary": 40000,
"from_date": "1994-07-03",
"to_date": "1995-07-03"
},
{
"salary": 41003,
"from_date": "1995-07-03",
"to_date": "1996-07-02"
},
{
"salary": 41720,
"from_date": "1996-07-02",
"to_date": "1997-07-02"
},
{
"salary": 44005,
"from_date": "1997-07-02",
"to_date": "1998-07-02"
},
{
"salary": 45659,
"from_date": "1998-07-02",
"to_date": "1999-07-02"
},
{
"salary": 46077,
"from_date": "1999-07-02",
"to_date": "2000-07-01"
},
{
"salary": 48065,
"from_date": "2000-07-01",
"to_date": "2001-07-01"
},
{
"salary": 49474,
"from_date": "2001-07-01",
"to_date": "2002-07-01"
},
{
"salary": 50059,
"from_date": "2002-07-01",
"to_date": "9999-01-01"
}
],
"departments": [
{
"dept_no": "d005",
"dept_name": "Development",
"from_date": "1994-07-03",
"to_date": "9999-01-01",
"dept_manager": [
{
"emp_no": 110511,
"first_name": "DeForest",
"last_name": "Hagimont",
"email": "110511@cloud-spartan.com",
"from_date": "1985-01-01",
"to_date": "1992-04-25"
},
{
"emp_no": 110567,
"first_name": "Leon",
"last_name": "DasSarma",
"email": "110567@cloud-spartan.com",
"from_date": "1992-04-25",
"to_date": "9999-01-01"
}
]
}
],
"title": [
{
"title": "Engineer",
"from_date": "1994-07-03",
"to_date": "2000-07-02"
},
{
"title": "Senior Engineer",
"from_date": "2000-07-02",
"to_date": "9999-01-01"
}
]
},
JSON.parse() 之后的控制台:
{ 'body-json':
{ emp_no: 80000,
email: '80000@cloud-spartan.com',
first_name: 'Odoardo',
last_name: 'Ranft',
birth_date: '1963-06-23',
gender: 'F',
hire_date: '1994-07-03',
salaries:
[ [Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object],
[Object] ],
departments: [ [Object] ],
title: [ [Object], [Object] ] },
解决方案
你的代码有问题,你不需要stringfy
在parse
.
解析后,您现在可以像这样访问 emp_no:
json_result_post_parse["body-json"].emp_no
下面是一个工作示例代码:
const data = `{
"body-json": {
"emp_no": 80000,
"email": "80000@cloud-spartan.com",
"first_name": "Odoardo",
"last_name": "Ranft",
"birth_date": "1963-06-23",
"gender": "F",
"hire_date": "1994-07-03",
"salaries": [
{
"salary": 40000,
"from_date": "1994-07-03",
"to_date": "1995-07-03"
},
{
"salary": 41003,
"from_date": "1995-07-03",
"to_date": "1996-07-02"
}
]
}
}`
function testjson() {
const parsedData = JSON.parse(data);
console.log(parsedData["body-json"].emp_no)
}
testjson()
推荐阅读
- javascript - 如何删除字符串中额外出现的字母?
- php - 当php OPCODE被zend解释时,真正执行的是什么?
- axapta - 在我执行完整 CIL 时收到这些错误消息
- javascript - 操作不会触发 redux/redux thunk
- azure - 如何让 nUnit 单元测试与 Azure 管道中的 Xamarin.Forms 一起使用?
- python - GET 请求忽略我在 python 请求中的参数
- python - 使用承载标头对受 IAP 保护的资源进行身份验证?
- ssl - 在不反弹 Kafka 集群的情况下将信任库证书添加到 Apache Kafka
- python - 将数据帧中的数据附加到列表中-熊猫中的“字符串索引必须是整数”
- javascript - 如何根据所选单元格的值在电子表格单元格上创建注释