анализировать массив в строковой форме в javascript - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь обработать документ json из стороннего API. данные возвращаются в строковом формате и выглядят примерно так:

{
   "response":{
      "field1":7,
      "field2":0,
      "records":[
         {
            "id":"1",
            "title":[
               "cyx"
            ],
            "doc1":[
               "1",
               "2"
            ],
            "doc2":["\n\t        [\n\t        \t\"1\",\n\t            \"2\",\n\t        ]\n\t    "],
         }
      ]
   }
}

когда я пытаюсь обработать doc2, он возвращает строку, подобную этой: [ "1", "2", ] вместо того, чтобы возвращать массив, как в демонстрации для doc1 . когда я пытаюсь использовать JSON .parse (), приложение выдает ошибку.

вот простая демонстрация проблемы: https://jsfiddle.net/harpalshergill/39acf4dn/24/

Мне интересно, как разобрать этот массив, не удаляя пробелы, символы \ n, \ t вручную? спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

Вы можете использовать следующий подход:

const doc2 = ["\n\t        [\n\t        \t\"1\",\n\t            \"2\",\n\t        ]\n\t    "];
const result = doc2.toString().replace(/[^\w\r\n]+/gm, "").trim().split('\n');


// result =  ["1", "2"]

Рабочий пример: https://jsfiddle.net/2kyp6aow/

0 голосов
/ 16 июня 2020

Вы можете заменять символы как в примере

var body = " {\"Warranty\": [ \n { \n \"Name\": \"test\", \n \"Type\": \"test2\", \n \"Months\": \"6\", \n }, \n { \n \"Name\": \"Test6\", \n \"Type\": \"test7\", \n \"Months\": \"6\", \n }, \n { \n \"Name\": \"test9\", \n \"Type\": \"test10\", \n \"Miles\": \"10000\", \n } \n ]} ".replace(/\r?\n|\r/g, "").replace(/\s+/g, "").replace(/,}/g,'}');
var object = JSON.parse(body);
...