1

/r で区切られた JSON 値の文字列があります。DB テーブルのレコードのようなものです。次のようになります。

"{"id":"id","hole":"hole","stat":"stat","value":"value"}/r{"id":1354075540949,"hole":"1" ,"stat":"score","value":"4"}/r{"id":1354075540949,"hole":"1","stat":"putts","value":"1"} /r{"id":1354075540949,"hole":"1","stat":"モミ","value":"y"}/r{"id":1354075540949,"hole":"1", "stat":"gir","value":"n"}/r"

最初の行は列名 (id、hole、stat、value) で、同じ値を指定します。/r で区切られた他のすべての行は、実際のデータです。

この文字列を /r で分割し、結果をループして、各要素の JSON.parse() の結果を配列にプッシュします。これで、指定された構造 (id、hole、stat、価値)。「id」フィールドが大きな長い数値ではなく true または false になることを除いて、すべてが機能しています。なぜそれをしているのですか?

var tblData = localStorage.getItem(tblName).split("/r");
var data = new Array();

// fill the array
for (i = 1; i < tblData.length - 1; i++)
    data.push(JSON.parse(tblData[i]));

[編集] これは機能しているようですが、この直後に実行する jQuery.grep() があり、id プロパティを true/false に設定しています。

var changeRecords = jQuery.grep(data, func);

func は次のとおりです。

function (v) { return v.id == gCurrentRoundID && v.hole == gCurrentHole; }

ただし、id を true/false に設定する理由がわかりません。

[編集2]

気にしないでください、私は自分のエラーを見つけました。上記の関数は正しいものではなく、v.id = gCurrentRoundID の等号が 1 つしかない関数があったため、true/false に設定していました。

4

1 に答える 1

3

文字列全体を手動で有効な JSON に変更するだけです。a で始まり a[で終わるようにし、それらすべてのs をカンマ]に置き換えます。/r最終結果は次のようになります

"[{"id":"id","hole":"hole","stat":"stat","value":"value"},{"id":1354075540949,"hole":"1" ,"stat":"score","value":"4"},{"id":1354075540949,"hole":"1","stat":"putts","value":"1"}, {"id":1354075540949,"hole":"1","stat":"fir","value":"y"},{"id":1354075540949,"hole":"1","stat" :"gir","値":"n"},]"

次に、それを解析ますJSON.parse

最後の末尾のコンマが IE8 で問題を引き起こす可能性があることに注意してください。もしそうなら、かなり簡単に手動で修正できるはずです。何かのようなものs = s.substr(0, s.length - 2) + ']';

于 2012-11-28T05:12:20.883 に答える