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.データを取得し、dbで変更が発生したときに、IDを使用してオブジェクトの値を変更できるようにします。

例:object [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 に答える