如何向半复杂JSON对象添加值?

时间:2012-03-21 10:57:26

标签: javascript json object add

我是使用JSON对象的新手,我有点卡住了。

我有一个从这个数组转换过的JSON对象:

Array
(
    [status] => success
    [id] => 1
    [name] => Zone 1
    [description] => Awesome zone deze..
    [tiles] => Array
    (
        // Column for the tile grid
        [0] => Array
            (
                // Row for the tile grid
                [0] => Array
                    (
                        [tileID] => 1
                        [rotation] => 0
                    )
                [1] => Array
                    (
                        [tileID] => 1
                        [rotation] => 0
                    )
                // Etc..
            )
        [1] => Array // etc.. etc..
    )
)

我使用此对象为我的HTML5 Canvas游戏渲染出一个等距网格。我正在构建一个地图编辑器并在地图上放置更多的图块,我将不得不为这个json对象添加值。

这就是我在PHP中的表现:

mapData[column][row] = array(
    'tileID' => 1,
    'rotation' => 0
);

所以我的问题是,如何在javascript中使用JSON对象实现这一目标?

提前致谢!

尼克

更新

我遇到了一个错误:

can't convert undefined to object
mapDataTiles[mouseY][mouseX] = { tileID: editorSelectedTile, rotation: 0 };

这是我用来点击&的代码。然后将新磁贴保存到JSON对象。起初我虽然我的一个参数是'未定义',所以我将它们记录到控制台但它们完美地出来了..

// If there is already a tile placed on these coordinates
if( mapDataTiles[mouseX] && mapDataTiles[mouseX][mouseY] )
{
    mapDataTiles[mouseX][mouseY]['tileID'] = editorSelectedTile;
}
// If there is no tile placed on these coordinates
else
{
    mapDataTiles[mouseX][mouseY] = { tileID: editorSelectedTile, rotation: 0 };
}

我的变量具有以下值:

MouseX: 5
MouseY: 17 
tileID: 2

同样奇怪的是,对于某些坐标,它实际上可以工作并将新数据保存到数组中。

更新2

经过几个小时的试错编码后,我想出了一个解决方案!

感谢大家的帮助!

如果有人好奇,我很乐意展示我的代码。到目前为止我所拥有的是能够在任何方向上扩展世界地图以获得无限量的瓷砖。 :d

2 个答案:

答案 0 :(得分:0)

几乎同样的方式。 JavaScript对象是最简单的改变之一:)

jsonObject.tiles[column][row] = {tileID: 1, rotation: 0};

答案 1 :(得分:0)

如果您想添加一行:

mapData.tiles.push([
{
    'tileID': 1,
    'rotation': 0
},
{
    'tileID': 3,
    'rotation': 0
}]);

如果要将列添加到现有行:

mapData.tiles[row].push({
    'tileID': 1,
    'rotation': 0
});