Попытка получить данные из API и использовать их как объекты. Проблема в том, что я не получил правильный результат после JSON.parse() и не знаю, как получить доступ к данным (не зная индекса или параметров для получения конкретных данных).
Функция в Express с использованием axios:
var result_post = axios.post(url_post, post_data, post_config);
result_post.then(function (res){
//console.info("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.info(json_result_post_parse);
//cconsole.info(json_result_post);
fs.writeFile("data_post.json", json_result_post, function(err){
if (err){
console.info(err);
}
});
//json_result_post_parse = JSON.parse(json_result_post);
//console.info("RESPONSE: ", res);
})
.catch(function (err){
console.info("AXIOS ERROR: ", err);
});
Некоторые данные после JSON.stringify():
{
"body-json": {
"emp_no": 80000,
"email": "[email protected]",
"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": "[email protected]",
"from_date": "1985-01-01",
"to_date": "1992-04-25"
},
{
"emp_no": 110567,
"first_name": "Leon",
"last_name": "DasSarma",
"email": "[email protected]",
"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: '[email protected]',
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] ] },
Спасибо за предложение. Мой следующий вопрос: как я могу получить доступ к некоторым конкретным данным? Например, я хотел бы получить только emp_no или оклады.
Чтобы получить определенные данные, вы должны сначала объявить переменную или объект. Например, вы хотите emp_no, тогда
var emp = body-json.emp_no
или если хочешь зарплаты то
var salary = body-json.salaries.salary
Предлагаемое вами решение не является неполным и вызывает синтаксическую ошибку. Предлагаю удалить. С наилучшими пожеланиями,
Как бы вы предложили мне получить данные?
У вас проблема в коде, вам не нужно stringfy
перед parse
.
После синтаксического анализа теперь вы можете получить доступ к emp_no следующим образом:
json_result_post_parse["body-json"].emp_no
Ниже приведен рабочий пример кода:
const data = `{
"body-json": {
"emp_no": 80000,
"email": "[email protected]",
"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.info(parsedData["body-json"].emp_no)
}
testjson()
Спасибо за комментарий. Я использовал stringify для сохранения данных в файл json. Все еще не нужен?
Пожалуйста. На самом деле вам нужно использовать stringify только перед сохранением в файл, если у вас есть «разобранный» объект json.
@ mrsong822 Спасибо, что выбрали мой ответ. Не могли бы вы также проголосовать? Спасибо еще раз.
Возможный дубликат Как я могу получить полный объект в console.info() Node.js, а не в «[Object]»?