@mafe_ru

Как «дойти» точечной нотацией до вложенного объекта в JSON?

Помогите с достаточно глупым вопросом но ни как не пойму, пол интернета облазил.

Я использую Vue.js получаю с базы JSON:
"programs" : {
    "Abs" : [ null, {
      "bR" : 10.5,
      "dR" : {
        "oR" : 0,
        "p" : 0,
        "pro" : 0
      },
      "fP" : 15,
      "l" : "O7",
      "name" : "Один из многих",
      "tD" : {
        "bR" : 0,
        "fP" : 0
      },
      "uR" : {
        "i" : 0,
        "s" : 0
      }
    }]
  Two: {
  "id" : 555
}
}


Я на первых уровнях вложенности понимаю как "дойти"
{{programs[1].id}} // Выводит 555
А что делать с более глубокой вложенностью? Может кто объяснить популярно и если возможно, на примере?
  • Вопрос задан
  • 359 просмотров
Решения вопроса 2
Ptolemy_master
@Ptolemy_master
Точно так же и доходить:

programs["Abs"][2]["name"] //Один из многих
programs["Abs"][1]["dr"]["p"] //0


Только неужели вам это нужно?
Ответ написан
Комментировать
boratsagdiev
@boratsagdiev
Странная у вас структура, не будете же вы каждый раз угадывать в каком индексе массива нужные данные?
Ну а доходить дот-нотацией так же и глубже, в чем проблема? Бывают случаи, когда доступ к свойству можно получить только со скобками, например когда ключ является числом ("1" в примере) или содержит точки...и думаю можно ещё поднавалить примеров.

const example = {
    "sample": {
        "someitem": {
            "thesearecool": [
                {
                    "neat": "wow"
                },
                {
                    "neat": "tubular"
                }
            ]
        },
        "coolcolors": [
            {
                "color":"red",
                "hex":  "ff0000"
            },
            {
                "color":"blue",
                "hex":"0000ff"
            }
        ]
    },
    "1": {
        "some": "item"
    }
}


// ​​​​​[ { neat: 'wow' }, { neat: 'tubular' } ]​​​​​
example.sample.someitem.thesearecool
// ​​​​​[ { color: 'red', hex: 'ff0000' },​​​​​ { color: 'blue', hex: '0000ff' } ]​​​​​
example.sample.coolcolors
// ​​​​​{ some: 'item' }​​​​​
example["1"]
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@akass
Developer
Можете JsonPath попробовать
Ответ написан
Комментировать
@kulaeff
Front-end developer
Во-первых, ваш JSON невалидный. Во-вторых, путь programs["Abs"][2] не существует, поскольку в programs["Abs"] находится массив, состоящий только из 2-х элементов с индексами 0 и 1. Вот примеры того, как можно получить какие-то свойства из вашего JSON:

programs.Abs[1].bR
programs.Abs[1].dR.oR
programs.Abs[1].name
programs.Two.id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы