首先,你引用的代码不是JSON。你的代码是JavaScript对象字面量表示法。 JSON是该表示法的子集,旨在更轻松地进行解析。
你的代码定义了一个包含一个对象(data
)和该对象的数组(items
)的对象数组(每个对象都有id
、name
和type
)。
这并不需要使用jQuery,只需要JavaScript。
添加一个项:
data.items.push(
{id: "7", name: "Douglas Adams", type: "comedy"}
);
这会在末尾添加。请参见下面有关在中间添加的说明。
删除项:
有几种方法。 splice
方法是最通用的:
data.items.splice(1, 3)
// ("Witches of Eastwick", "X-Men", "Ordinary People")
splice
修改了原始数组,并返回一个包含已删除项的新数组。
在中间添加:
splice
实际上既可以添加也可以删除。splice 方法的签名为:
removed_items = arrayObject.splice(index, num_to_remove[, add1[, add2[, ...]]]);
index
- 开始进行更改的位置索引
num_to_remove
- 从该索引开始,要删除的条目数量
addN
- ...然后插入这些元素
因此,我可以像这样在第三个位置添加一个项目:
data.items.splice(2, 0,
{id: "7", name: "Douglas Adams", type: "comedy"}
);
这意味着从索引2开始,删除0个项目,然后插入以下项目。结果如下所示:
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "2", name: "Witches of Eastwick", type: "comedy"},
{id: "7", name: "Douglas Adams", type: "comedy"}, // <== The new item
{id: "3", name: "X-Men", type: "action"},
{id: "4", name: "Ordinary People", type: "drama"},
{id: "5", name: "Billy Elliot", type: "drama"},
{id: "6", name: "Toy Story", type: "children"}
]};
您可以同时删除一些并添加一些:
data.items.splice(1, 3,
{id: "7", name: "Douglas Adams", type: "comedy"},
{id: "8", name: "Dick Francis", type: "mystery"}
);
这意味着:从索引1开始,删除三个条目,然后添加这两个条目。结果为:
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "7", name: "Douglas Adams", type: "comedy"},
{id: "8", name: "Dick Francis", type: "mystery"},
{id: "4", name: "Ordinary People", type: "drama"},
{id: "5", name: "Billy Elliot", type: "drama"},
{id: "6", name: "Toy Story", type: "children"}
]};
{items: []}
的 JSON 表示应该是{"items": []}
。虽然它们非常相似,但并不完全相同(再次提醒,JSON 是您正在使用的对象字面量符号的子集)。当您反序列化 JSON 时,结果是一个对象图形(例如,在 JavaScript 中,它是一个 JavaScript 对象)。 - T.J. Crowder