Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 09.10.2016
Сообщений: 91

Парсинг json ответа

23.04.2021, 06:54. Показов 757. Ответов 3

Студворк — интернет-сервис помощи студентам
Добрый день. Я получаю ответ от внешнего источника в виде json:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{"payload":
  {"spark":
    {"corporate_information":
      {"additional_data":
        {"records":
          [{"AccessibleFinData":
             {"Period":
               [{
                 "@EndDate":"2020-12-31",
                 "@IDPeriod":559,
                 "@Name":"2020"
               },
              {
                "@EndDate":"2019-12-31",
                "@IDPeriod":555,
                "@Name":"2019"
              },
              {
                  "@EndDate":"2018-12-31",
                  "@IDPeriod":551,
                  "@Name":"2018"
             },
             }
          }]
        }
      },
    text: "Отчет получен"
    }
  }
}
Поле "text" распарсить получилось:
JavaScript
1
2
3
4
5
 // парсинг ответа, в res1 весь json-ответ
var res_obj = JSON.parse(res1);
if (!res_obj.payload.spark.corporate_information.error) {
               res_obj.payload.spark.corporate_information.additional_data.records.forEach(function(record_item){
                  Var TextResult = res_obj.payload.spark.corporate_information.text || null;
А вот с "AccessibleFinData" проблема. Подскажите как эти данные можно вытащить в js-переменные? Мне нужен массив Period с полями: IDPeriodи Name.
JavaScript
1
2
3
4
   var accessiblefindata = JSON.parse(record_item.AccessibleFinData); // так синтаксическая ошибка: Unexpected token: o
         var accessiblefindata = record_item.accessiblefindata; // ошибки нет но получаю undefined и в цикл не заходит
               for (var i = 0; i < accessiblefindata.length; i++) { 
               }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2021, 06:54
Ответы с готовыми решениями:

парсинг JSON
Здравствуйте. нашел в инете статью по работе с объектами JSON 1 2, решил побробовать, но че-то не фурычит. Описание проблемы: 1....

Парсинг json ответа в "ассоциативный массив"
Всем привет. Тривиальная задача, но не получается решить ее адекватно. Хочу сделать одностраничный сайт, с контентом , который будет...

Парсинг json , переменные из json
Всем доброго времени суток, в общем столкнулся с проблемой в силу отсутствия достаточного колл-ва знаний по js, jquery, jsonp. ...

3
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
23.04.2021, 07:27
Здравствуйте.
Вы принципиально не могли получить TextResult, потому что JSON сломан.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
        let res1 = `
{"payload":
  {"spark":
    {"corporate_information":
      {
      "additional_data":
        {"records":
          [{"AccessibleFinData":
             {"Period":
               [
               {
                 "@EndDate":"2020-12-31",
                 "@IDPeriod":559,
                 "@Name":"2020"
               },
               {
                 "@EndDate":"2019-12-31",
                 "@IDPeriod":555,
                 "@Name":"2019"
               },
               {
                 "@EndDate":"2018-12-31",
                 "@IDPeriod":551,
                 "@Name":"2018"
               }
               ]
             }
          }]
        },
      "text": "Отчет получен"
      }
    }
  }
}
`;
 
        let res_obj = JSON.parse(res1);
        let textResult = res_obj.payload.spark.corporate_information.text;
        console.log(textResult);
        let period = res_obj.payload.spark.corporate_information.additional_data.records[0]
            .AccessibleFinData.Period;
        console.log(period);
0
0 / 0 / 0
Регистрация: 09.10.2016
Сообщений: 91
23.04.2021, 07:47  [ТС]
смогла и получила text, возможно некорректно вставила json, т.к. отчет довольно громоздкий, а я вставила часть

Добавлено через 17 минут
Period:
Коллекция [
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
]

Text: Ответ получен
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
23.04.2021, 08:03
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<!DOCTYPE html>
<html>
 
<head>
    <meta charset="utf-8">
    <style>
        table {
            border-collapse: collapse;
            /* объединяем границы ячеек в одну */
        }
 
        td,
        th {
            padding: 0em 0.5em;
            border: 1px solid gray;
            /* задаем сплошную границу размером 1 пикселей цвета gray */
            /* width: 50px; */
            /* ширина ячеек */
            height: 30px;
            /* высота ячеек */
            text-align: center;
            /* горизонтальное выравнивание по центру */
        }
 
        caption {
            font-size: 1.17em;
            /* Размер шрифта */
            font-weight: bold;
            /* жирное начертание */
            margin-bottom: 0.5em;
            /* отступ под заголовком */
        }
    </style>
</head>
 
<body>
 
    <script>
        /**
         * Таблица на <table>
         * @param {HTMLElement} wrapper Внешний DOM-элемент, в конец которого вставлять таблицу
         * @param {string} caption Строка-заголовок таблицы
         * @param {Array} headArray Массив заголовков столбцов таблицы
         * @param {Array} bodyArray Основной массив таблицы
         * @param {Array} footArray Массив итогов таблицы
         */
        function createTable(wrapper, caption, headArray, bodyArray, footArray) {
            let s = `<table>`;
            if (typeof caption === "string" && caption.length) {
                s += `<caption>${caption}</caption>`;
            }
            if (Array.isArray(headArray) && headArray.length) {
                s += `<thead><tr>`;
 
                for (let name of headArray)
                    s += `<th>${name}</th>`;
 
                s += `</tr></thead>`;
            }
            s += `<tbody>`;
            for (let row of bodyArray) {
                s += `<tr>`;
                for (let e of Object.values(row))
                    s += `<td>${e}</td>`;
 
                s += `</tr>`;
            }
            s += `</tbody>`;
            if (Array.isArray(footArray) && footArray.length) {
                s += `<tfoot><tr>`;
 
                for (let summary of footArray)
                    s += `<th>${summary}</th>`;
 
                s += `</tr></tfoot>`;
            }
            s += `</table>`;
            wrapper.insertAdjacentHTML("beforeend", s);
        }
 
        let res1 = `
{"payload":
  {"spark":
    {"corporate_information":
      {
      "additional_data":
        {"records":
          [{"AccessibleFinData":
             {"Period":
               [
               {
                 "@EndDate":"2020-12-31",
                 "@IDPeriod":559,
                 "@Name":"2020"
               },
               {
                 "@EndDate":"2019-12-31",
                 "@IDPeriod":555,
                 "@Name":"2019"
               },
               {
                 "@EndDate":"2018-12-31",
                 "@IDPeriod":551,
                 "@Name":"2018"
               }
               ]
             }
          }]
        },
      "text": "Отчет получен"
      }
    }
  }
}
`;
 
        let res_obj = JSON.parse(res1);
        let textResult = res_obj.payload.spark.corporate_information.text;
        console.log(textResult);
        let period = res_obj.payload.spark.corporate_information.additional_data.records[0]
            .AccessibleFinData.Period;
        console.log(period);
 
        createTable(document.body, "Массив Period", Object.keys(period[0]), period);
    </script>
</body>
 
</html>
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2021, 08:03
Помогаю со студенческими работами здесь

Парсинг ответа сервера ajax
Здравствуйте, ответ от сервера приходит в формате json, вида: {&quot;asd&quot;:true,&quot;aaa&quot;:&quot;$&quot;,&quot;html&quot;:}. Нужно распарсить и вызвать функцию...

Создать div'ы на основе JSON-ответа
Мне нужно создать АПИ запрос и обработать ответ хотя-бы в Divы текстом запрос делается на другой сайт вот так...

Создание модели, json ответа от сервера
В общем есть ответ от сервера в виде json файла вида: { &quot;items&quot;: , &quot;_links&quot;: { &quot;self&quot;: { ...

Уже сутки мучаюсь с кодировкой ответа json
Люди добрые, помогите... не могу понять в чем дело, уже сутки бьюсь проблемой... Суть в том, что запрос json возвращает чепуху, я уже...

Парсинг JSON
День добрый, такая вот проблема, не так давно познакомился с фронтом и появилась такая обычная казалось бы задачка, но айкью не очень то и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru