0

我正在做的是:

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 更改对象中的值。

例如:对象[6350].pop="changed";

请告诉我:

-->这是否是正确的方法,或者我可以以更简单或有效的方式做到这一点?

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

4

1 回答 1

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 访问对象,则此函数会很慢。像您一样创建查找表不会产生太多的内存开销,但可以更快地检索数据。

顺便说一句:您的标题问题“将数据另存为对象或 json ”令人困惑。将操作对象序列化回 JSON 是没有意义的,因为您总是会使用已解析的对象。当然,如果您只需要操作 JSON 字符串,并且确切地知道要做什么,那么(简单的)字符串操作可能比解析、操作和字符串化更快。

于 2012-09-06T14:20:20.903 回答