Как разобрать и объединить указанный разделитель c - PullRequest
0 голосов
/ 24 февраля 2020

Моя проблема в том, что мне нужно объединить весь текст после "product_link_href": в огромном количестве ie вещей (их 200+, поэтому я не смог опубликовать весь вещь) как:

Solved snippet removed for privacy reasons

Это происходит от API, он белый в windows Power Shell, название вещи - response.data Я использую Axios; Я думаю, что эта вещь для машины - просто текст, потому что она была зеленой, прежде чем я выбрал ее whit .data ; но мне все еще нужен весь текст после "product_link_href": сцепленный, в текстовом формате и разделенный на ","

Код, который я использую:

axios.get('https://randomapi/' + id + '/json?api_token=examplenotrealapitoken').then(response => {
                console.log(response.data);
            });

Я пытался JSON .parse и stringify, но ничего не работает.

1 Ответ

1 голос
/ 24 февраля 2020

Ответ от сервера является строковым JSON объекты, которые были объединены с символами возврата строки "\ n".

Он не JSON разбирается, потому что это не массив, который ему нужен быть, быть действительным JSON.

Подход, который я выбрал, состоит в том, чтобы привести его к "массиву строк JSON объектов". Поскольку каждый объект неглубокий, вложенности нет, поэтому символ } однозначно является концом строкового объекта.

Вы можете вызвать massiveJSONishString.split('}'), и вы получите массив JSON -stringified объекты с завершающим } отсутствующим на каждом.

Затем вы отображаете этот массив , и для каждого элемента добавляете конечный }, который мы выбросили, в array-ify это и JSON.parse() эта строка, создающая массив JSON объектов.

Это код, который вы ищете:

const textArray = res.data.split("}");

const jsonArray = textArray.map(element => {
  try {
    return JSON.parse(`${element}}`);
  } catch (e) {
    return {
      product_link_href: "MALFORMED JSON"
    };
  }
});
// console.log(jsonArray);
const product_link_hrefs = jsonArray.map(obj => obj.product_link_href);
const list = product_link_hrefs.join(", ");

console.log(list);

console.log(`You're welcome!`);
...