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

时间:2012-09-05 06:38:47

标签: javascript json optimization

我正在做的是:

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

获取数据

ex:object [6305]会给我数据。

3 。因此我可以检索数据,并在db中发生更改时使用id更改对象中的值。

ex:object [6350] .pop =“changed”;

请告诉我:

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

- >我是否可以按原样存储json响应并按原样解析数据?如果是这样请以示例解释。

1 个答案:

答案 0 :(得分:0)

是的,当然您不需要构建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字符串,并且确切地知道该做什么,那么(简单)字符串操作可能比解析,操作和字符串化更快。