Добавить данные в вопрос массива JSON

1

У меня возникли проблемы в коде ниже, пытаясь переместить данные в структуру JSON с массивом. В следующем коде "M" - массив, который может быть добавлен, x - целочисленное значение. Я пытаюсь поместить несколько записей в массив "P" с помощью push, но я получаю следующую ошибку:

Uncaught TypeError: Не удается прочитать свойство "push" неопределенного

var x = 3;
var title = "A Title"
var JSON_local_dat = {"M":[{"T":title, "P":[]}]};

for(var i=0; i < x; i++)
{
    var d = {"Something": 50};
    JSON_local_dat.M.P.push(d);
    console.log(JSON.stringify(JSON_local_dat.M.P));
}

Я также попытался удалить двойные кавычки, но я получаю ту же ошибку. Если я вместо этого попытаюсь вставить данные в "M", это будет успешным, но не "P". Не могу понять, почему он не должен делать то же самое для P, где я хочу, чтобы данные шли.

(BTW Я использую одиночные буквы в качестве имен, потому что пространство жесткое, API, который я использую для передачи данных, ограничивает меня до 4000 символов.)

Теги:
arrays
push
append

4 ответа

0

Чтобы исправить свой код, используйте M[0] с его массивом.

JSON_local_dat.M[0].P.push(d);

0

M - это массив. Используйте M[0] чтобы получить первую запись в массиве, которая здесь является объектом с свойством P

x = 3;
var JSON_local_dat = {"M":[{"T":"title", "P":[]}]};

for(var i=0; i < x; i++)
{
    var d = {"Something": 50};
    JSON_local_dat.M[0].P.push(d);
    console.log(JSON.stringify(JSON_local_dat.M[0].P));
}
  • 1
    Благодарю. Я думаю, что я стал слепым! Ответ очевиден сейчас.
  • 0
    @MatureHampers - не бери в голову. Такое случается :)
0

P является свойством первого объекта в массиве M, а не самого M Вам нужно выбрать первый элемент массива, чтобы добраться до объекта (а не самого массива), чтобы получить доступ к P:

var x = 3;
var title = "A Title"
var JSON_local_dat = {"M":[{"T":title, "P":[]}]};

for(var i=0; i < x; i++)
{
    var d = {"Something": 50};
    JSON_local_dat.M[0].P.push(d);
}
console.log(JSON.stringify(JSON_local_dat.M));

Если вы хотите сделать его более эффективным, вы можете выбрать массив P только один раз, а не на каждой итерации:

var x = 3;
var title = "A Title"
var P = [];
var JSON_local_dat = {"M":[{"T":title, P}]};


for(var i=0; i < x; i++)
{
    var d = {"Something": 50};
    P.push(d);
}
console.log(JSON.stringify(JSON_local_dat.M));

Кроме того, у вас нет JSON - у вас просто простой Javascript-объект. См. Нет такой вещи, как "Объект JSON",

  • 0
    Спасибо, это выглядит хорошо.
0

Ваш json (JSON_local_dat) не создается так, как вы хотите. вы заставили M быть массивом (его первый элемент имеет свойство P). изменить на -

var JSON_local_dat = {"M":{"T":title, "P":[]}};

Ещё вопросы

Сообщество Overcoder
Наверх
Меню