我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能



我正在做的是:

1.从ajax响应(json格式)中获取值,用于列出

response = {"categories":[{"name":"General","id":"6305","pop":"show when clicked"},{"name":"Navigation","id":"6043","pop":"show when clicked"},{"name":"New","id":"6051","pop":"show when clicked"},{"name":"Time","id":"6117","pop":"show when clicked"},{"name":"Reesh","id":"6207","pop":"show when clicked"}]}

2。我将解析json并将其存储在类似的对象中

例如:

object= {6305:{"name":"General","id":"6305","pop":"show when clicked"},
6043:{"name":"Navigation","id":"6043","pop":"show when clicked"},
6051:{"name":"New","id":"6051","pop":"show when clicked"},
6117:{"name":"Time","id":"6117","pop":"show when clicked"},
6207:{"name":"Reesh","id":"6207","pop":"show when clicked"}};

我之所以这么做是因为我可以使用id 获取数据

例如:object[6305]会给我数据。

3。这样,当数据库发生更改时,我可以检索数据,也可以使用id更改对象中的值。

例如:object[6350].pop="已更改";

请告诉我:

-->这是正确的方法还是我可以用一种更简单或有效的方式?

-->我是否可以按原样存储json响应并按原样解析数据?如果是,请举例说明

是的,当然不需要构建object:
function getObject(id) {
    for (var i=0; i<response.categories.length; i++)
        if (response.categories[i].id == id)
            return response.categories[i];
    return null;
}

但是,如果您经常需要通过对象的id来访问对象,那么这个函数会很慢。像以前那样创建查找表不会产生太多内存开销,但会使检索数据的速度更快。

BTW:您的标题问题"将数据保存为对象或json"令人困惑。将被操纵的对象序列化回JSON是没有意义的,因为您总是使用解析后的对象。当然,如果您只需要操作JSON字符串,并且知道该做什么,(简单)字符串操作可能比解析、操作和字符串化更快。

最新更新