13.07.2021, 16:52
|
Аспирант
|
|
Регистрация: 01.12.2014
Сообщений: 59
|
|
Разбор JSON (postman)
Добрый день.
Есть ответ в формате json из postman:
Код:
|
{
"took": 1,
"responses": [
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 10000,
"relation": "gte"
},
"max_score": 2,
"hits": [
{
"_index": "goods",
"_source": {
"id": ,
"title": "Первый."
}
},
{
"_index": "goods",
"_source": {
"id": ,
"title": "Второй."
}
}
},
"status": 200
},
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 10000,
"relation": "gte"
},
"max_score": 2,
"hits": [
{
"_index": "goods",
"_source": {
"id": ,
"title": "Третий."
}
},
{
"_index": "goods",
"_source": {
"id": ,
"title": "Четвертый."
}
},..... |
Обработка:
let results = []
pm.response.json().responses.map(item => {
item.hits.hits.map(element => {
results.push(element._source)
})
});
В results получаю первый , второй, третий, четвертый.
Т.к. это разные блоки можно ли как-то их разделить, что бы было
например:
Код:
|
первый
второй
---/разделитель/--
третий
четвертый
---/разделитель/--
..... |
Спасибо.
|
|
13.07.2021, 17:46
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
let results = []
pm.response.json().responses.map((item, i) => {
if(i !== 0 && item.hits.hits.length > 0)
results.push({id: '', title: '---/разделитель/--'});
item.hits.hits.forEach(element => results.push(element._source));
});
0_o
__________________
29375, 35
|
|
14.07.2021, 10:03
|
Аспирант
|
|
Регистрация: 01.12.2014
Сообщений: 59
|
|
То, что надо)
Спасибо.
Хотел распарсить запрос от ответов из 1 вопроса:
{"query":{"match":{"short_description":"Первый"}},"from":0,"size":5}
var response = pm.response.json();
var req = JSON.parse(request.data);
var SHD = data.short_description;
Ошибка парсинга.
JSONError: Unexpected token '{' at 2:1 {"query":{"match":{"short_description":"Первый ^
По сути нужно только то что в "short_description".
Заранее спасибо)
Последний раз редактировалось repz, 14.07.2021 в 10:40.
|
|
14.07.2021, 13:59
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
repz, 1. не надо парсить то, что и так объект; 2. чтобы получить что-то вложенное, надо пройти по всей вложенности, а не надеяться что компьютер сам догадается чего ты от него хочешь.
var req = request.data;
var SHD = req.query.match.short_description;
__________________
29375, 35
|
|
15.07.2021, 15:08
|
Аспирант
|
|
Регистрация: 01.12.2014
Сообщений: 59
|
|
Aetae,
Пробовал так тоже, ошибка:
TypeError: Cannot read property 'match' of undefined
|
|
15.07.2021, 19:25
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
console.log({
a: typeof req,
b: req
});
Что выводит?
Вообще это, блин, примитив из примитива. Ты должен с таким сам разбираться, иначе никуда не уедешь.
__________________
29375, 35
|
|
15.07.2021, 23:00
|
Аспирант
|
|
Регистрация: 01.12.2014
Сообщений: 59
|
|
Строка:
{a: "string", b: "{"index":"goods"}{"query":{"match":{"short_description":"Первый"}},"from":0,"size":5}
|
|
15.07.2021, 23:52
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
И что это, простите, за херня? Вот это вот
{"index":"goods"}{"query":{"match":{"short_description":"Первый"}},"from":0,"size":5}
- не валидный json, откуда он у вас взялся в req?
__________________
29375, 35
|
|
16.07.2021, 00:43
|
Аспирант
|
|
Регистрация: 01.12.2014
Сообщений: 59
|
|
Это req от elastic.
Видимо никак его не распарсить по отдельности.
|
|
|
|