Конвертировать массив строк в массив объектов в свойстве JSON - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть следующий JSON, возвращенный из конечной точки

{
    "response": {
        "lines": [
            "[{'line':'3007621h7s2','type':'national'},{'line':'3007663f7s9','type':'international'}]",
            "[{'line':'3007262p7f6','type':'national'},{'line':'3007262a0s1','type':'international'}]"
        ]
    }
}

свойство lines является массивом, который должен содержать несколько массивов, однако, как вы можете видеть, lines является массивом строк,Как я могу сделать каждый элемент в свойстве lines массивом объектов?

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Самый простой способ преобразовать строки в массивы - это eval() их.

var obj = {
  "response": {
    "lines": [
      "[{'line':'3007621h7s2','type':'national'},{'line':'3007663f7s9','type':'international'}]",
      "[{'line':'3007262p7f6','type':'national'},{'line':'3007262a0s1','type':'international'}]"
    ]
  }
}

obj.response.lines = obj.response.lines.map(line => eval(line));

console.log(obj);
0 голосов
/ 28 сентября 2018

Есть несколько ошибок с вашим JSON (я не знаю, является ли это настоящий JSON или он был жестко запрограммирован, так что вы можете проверить это).Первое значение

  • 'line:'3007621h7s2 должно быть 'line':3007621h7s2
  • Значения типа 3007621h7s2 должны быть '3007621h7s2'

Когда вы исправитеJSON, тогда вы можете использовать JSON.parse() для преобразования строки

var data = {
    "response": {
        "lines": [
            "[{'line':'3007621h7s2', 'type': 'national'},{'line':'3007663f7s9','type':'international'}]",
            "[{'line':'3007262p7f6', 'type': 'national'},{'line':'3007262a0s1','type':'international'}]"
        ]
    }
}

data.response.lines = data.response.lines.map(a=>JSON.parse(a.replace(/'/g,'"')))

console.log(
  data
)
...