2014-04-22 3 views
0

(я проверил по крайней мере несколько десятков постов на SO об этой ошибке и сделал несколько изменений, как я считаю нужным без толка)Ошибка при добавлении нового элемента в формат JSON

Итак, я начал с простой var:

var _jsonStr = '{"hotspots:":[]}'; 

Затем анализируется его:

var _jsonObj = JSON.parse(_jsonStr); 

В другой части моего HTML, я получаю значение переменной id, x и y и присвоить эти значения _jsonObj следующим образом:

_jsonObj.hotspots[0].id = id; // error! 
_jsonObj.hotspots[0].xval = x; 
_jsonObj.hotspots[0].yval = y; 

И я хотел бы, чтобы в конечном итоге с набором этих id, x, пар y значение в моей JSON, который будет выглядеть примерно так:

var _jsonObj = { 
    "hotspots": [ 
     { id: 0, xval: 25, yval: 50 }, 
     { id: 1, xval: 80, yval: 120 }, 
     { id: 2, xval: 39, yval: 91 }, 
     ... 
    ] 
}; 

Ненависть, чтобы признать это, но я просто не мог понять, почему я продолжаю получать сообщение об ошибке, которое говорит: «Невозможно установить id свойства неопределенной или нулевой ссылки» как описано выше. Мне кажется, что я делаю что-то неправильно с добавлением нового члена к объекту JSON, но я просто не понимаю, почему это так.

ответ

1

Вы получаете сообщение об ошибке, поскольку _jsonObj.hotspots[0] is undefined.

Это должно исправить:

_jsonObj.hotspots[0] = {}; 
_jsonObj.hotspots[0].id = id; 
_jsonObj.hotspots[0].xval = x; 
_jsonObj.hotspots[0].yval = y; 
3

_jsonObj.hotspots[0] является undefined, потому что _jsonObj.hotspots пуст. Если вы хотите создать новый объект с этим содержимым в конце концов, это было бы:

_jsonObj.hotspots.push({ 
    id: id, 
    xval: x, 
    yval: y 
}); 

Маленькая ремарка: это не «JSON объект», и вы не «преобразовать [я] его JSON ". Вы конвертируете его от JSON (который обозначает JavaScript Object Notation - не добавляйте еще одну «нотацию» до конца!) В объект JavaScript.

+0

У меня было подозрительное подозрение, что я не использую правильную терминологию. :) – BinaryCat

Смежные вопросы