在我的web应用程序我有一个是从服务器传递JSON字符串构建的对象。典型的JSON字符串可能如下所示:JSON嵌套的对象与Javascript数组
{
"_id": {
"$binary": "4x3tC1oTBkyvbu43rQj0EQ==",
"$type": "03"
},
"title": "Sony FW31 Lit 973.pdf",
"tags": [
{
"category": "Machine",
"text": "Cold Planers"
},
{
"category": "Attachments",
"text": "Blades"
}
]
}
,
{
"_id": {
"$binary": "s/Svg2CjSUWB1QGJ7e3QeA==",
"$type": "03"
},
"title": "Sony FW31 Lit 974.pdf",
"tags": [
{
"category": "Machine",
"text": "Cold Planers"
},
{
"category": "Attachments",
"text": "Blades"
}
]
},... and lots more items...
JSON字符串中可能有成千上万个对象。我可以高兴地使用JSON.parse()解析JSON。这创建了一个对象,我可以使用下面的javascript迭代:
var soughtKey='4x3tC1oTBkyvbu43rQj0EQ==';
for (var ii = 0; ii < itemlist.length; ii++) {
var item = itemlist[ii];
if (item._id$binary==soughtKey){
doSomething(item);
}
}
这似乎效率很低。我宁愿这样做:
doSomething(itemlist[soughtKey]);
但大概是为了做到这一点我需要我的顶级对象转换成某种关键索引的阵列的?我认为是没有办法来访问使用他们的ID值的特定ITEMLIST项目?
假设不是,将顶级itemlist对象转换为对象数组的最有效方法是什么,其中原始项目的所有属性仍可通过点符号访问,并且任何项目都可以通过点符号直接访问它的ID? (我知道每个嵌套的项目将有一个_id,但我不知道该结构的提前休息)。以及是否有JSON对象转换为数组与把它当作-是使用我的低效循环之间的性能权衡?
非常感谢。
我将运行查找了很多,所以价格昂贵的前期任务值得去做。我正在考虑构建第二个对象,以便它包含来自第一个对象的所有嵌套对象,但是数组可以通过_id值(作为关联数组)进行索引。好吧? – Journeyman
@Journeyman - 是的,这听起来是正确的。我发布的演示代码确实如此。之后,您可以执行诸如'byIds [seekingKey]'之类的操作,并返回一个Object,该Object具有该标识的标题和标签。 –
同样值得一提的是,如果你这么倾向,是TaffyDB。它允许你查询JSON集合。这是非常漂亮的国际海事组织。 http://taffydb.com/ –