Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разбор JSON (postman) (https://javascript.ru/forum/misc/82829-razbor-json-postman.html)

repz 13.07.2021 16:52

Разбор 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 получаю первый , второй, третий, четвертый.
Т.к. это разные блоки можно ли как-то их разделить, что бы было
например:
Код:

первый
второй
---/разделитель/--
третий
четвертый
---/разделитель/--
.....

Спасибо.

Aetae 13.07.2021 17:46

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

repz 14.07.2021 10:03

То, что надо)
Спасибо.

Хотел распарсить запрос от ответов из 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".

Заранее спасибо)

Aetae 14.07.2021 13:59

repz, 1. не надо парсить то, что и так объект; 2. чтобы получить что-то вложенное, надо пройти по всей вложенности, а не надеяться что компьютер сам догадается чего ты от него хочешь.
var req = request.data;
var SHD = req.query.match.short_description;

repz 15.07.2021 15:08

Aetae,
Пробовал так тоже, ошибка:
TypeError: Cannot read property 'match' of undefined

Aetae 15.07.2021 19:25

console.log({
  a: typeof req,
  b: req
});

Что выводит?

Вообще это, блин, примитив из примитива. Ты должен с таким сам разбираться, иначе никуда не уедешь.

repz 15.07.2021 23:00

Строка:
{a: "string", b: "{"index":"goods"}{"query":{"match":{"short_description":"Первый"}},"from":0,"size":5}

Aetae 15.07.2021 23:52

И что это, простите, за херня? Вот это вот
{"index":"goods"}{"query":{"match":{"short_description":"Первый"}},"from":0,"size":5}
- не валидный json, откуда он у вас взялся в req?

repz 16.07.2021 00:43

Это req от elastic.
Видимо никак его не распарсить по отдельности.


Часовой пояс GMT +3, время: 12:23.