向JSON添加新成员时出错

Error when adding a new member to JSON

本文关键字:出错 新成员 添加 JSON      更新时间:2023-09-26

(我在SO上查看了至少几十篇关于这个错误的帖子,并做了一些我认为合适的更改,但都无济于事)

因此,我从一个简单的var:开始

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

然后,解析它:

var _jsonObj = JSON.parse(_jsonStr);

在HTML的另一部分中,我获取变量idxy的值,并将这些值分配给_jsonObj,如下所示:

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

我希望最终在我的JSON中得到一组idxy值对,它们看起来像:

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

我不想承认这一点,但我只是不明白为什么我一直收到一个错误,上面评论道:"无法设置未定义或null引用的属性'id'"。在我看来,在JSON对象中添加一个新成员有点不对,但我不明白为什么会这样。

_jsonObj.hotspots[0]undefined,因为_jsonObj.hotspots是空的。如果你想在最后创建一个包含这些内容的新对象,它将是:

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

小提示:它不是"JSON对象",也不是"将其转换为JSON表示法"。您正在将其从JSON(代表JavaScript对象符号——不要在末尾添加另一个"符号"!)转换为JavaScript对象。

因为_jsonObj.hotspots[0]undefined,所以您会得到错误。

这应该解决它:

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