Итерация по вложенным массивам с дефисом в имени объекта - PullRequest
0 голосов
/ 04 июля 2018

Прежде всего, я знаю, что именование объектов массива дефисами совершенно некорректно, и я не являюсь их создателем. Мне нужно вызвать API внутри службы, и многие объекты имеют неправильные имена, например {"children-education": [ и { "Kid Stories": [.

Я попытался присвоить имя переменной, например let edChild = "child-education", а затем проанализировать ее для объекта, например edChild = JSON.parse(edChild), но безрезультатно. Я действительно понятия не имею, что я делаю, и даже если это возможно.

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

Вот пример JSON, который я пытаюсь перебрать:

{
    "business":
    [
        {
            "anim":
            [
                {
                    "child-education": [
                        {
                            "Kid Stories": [

                                {
                                    "id": 1,
                                    "name": "Three Little Pinkies",
                                    "url": "#",
                                    "description": "shows how the world is beautiful"
                                },
                  (... and so on)

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

1 Ответ

0 голосов
/ 04 июля 2018

Вы можете проанализировать эту строку JSON как любую строку JSON, используя JSON.parse ()

let str = "{\n" +
  "    \"business\":\n" +
  "    [\n" +
  "        {\n" +
  "            \"anim\":\n" +
  "            [\n" +
  "                {\n" +
  "                    \"child-education\": [\n" +
  "                        {\n" +
  "                            \"Kid Stories\": [\n" +
  "\n" +
  "                                {\n" +
  "                                    \"id\": 1,\n" +
  "                                    \"name\": \"Three Little Pinkies\",\n" +
  "                                    \"url\": \"#\",\n" +
  "                                    \"description\": \"shows how the world is beautiful\"\n" +
  "                                }]}]}]}]}" +
  ""
console.log(JSON.parse(str));

После этого вы можете использовать обозначение в скобках для доступа к любым именам свойств

let str = "{\n" +
  "    \"business\":\n" +
  "    [\n" +
  "        {\n" +
  "            \"anim\":\n" +
  "            [\n" +
  "                {\n" +
  "                    \"child-education\": [\n" +
  "                        {\n" +
  "                            \"Kid Stories\": [\n" +
  "\n" +
  "                                {\n" +
  "                                    \"id\": 1,\n" +
  "                                    \"name\": \"Three Little Pinkies\",\n" +
  "                                    \"url\": \"#\",\n" +
  "                                    \"description\": \"shows how the world is beautiful\"\n" +
  "                                }]}]}]}]}" +
  ""
const obj = JSON.parse(str);

console.log(obj.business[0].anim[0]['child-education'][0]['Kid Stories'][0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...