Не удается получить правильный результат с помощью JSON.stringify() и JSON.parse()

Попытка получить данные из 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 или оклады.

mrsong822 07.04.2019 06:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
64
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Чтобы получить определенные данные, вы должны сначала объявить переменную или объект. Например, вы хотите emp_no, тогда

var emp = body-json.emp_no

или если хочешь зарплаты то

var salary = body-json.salaries.salary

Предлагаемое вами решение не является неполным и вызывает синтаксическую ошибку. Предлагаю удалить. С наилучшими пожеланиями,

Muhammad Altabba 08.04.2019 08:50

Как бы вы предложили мне получить данные?

3rdsty4bl00d 08.04.2019 12:15
Ответ принят как подходящий

У вас проблема в коде, вам не нужно 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. Все еще не нужен?

mrsong822 07.04.2019 08:24

Пожалуйста. На самом деле вам нужно использовать stringify только перед сохранением в файл, если у вас есть «разобранный» объект json.

Muhammad Altabba 07.04.2019 10:34

@ mrsong822 Спасибо, что выбрали мой ответ. Не могли бы вы также проголосовать? Спасибо еще раз.

Muhammad Altabba 07.04.2019 13:39

Другие вопросы по теме