1

次のような文字列 (jQuery の text() を使用してページから取得したもの) を取得するにはどうすればよいでしょうか。

var myData = "[{name:'xxx',data:[1,2,3,4,5]},{name:'yyy',data:[5,4,3,2,1]}]"; //this is a string :(

そして、それを必要な実際の JavaScript オブジェクトに変換します。たとえば、次のようになります。

var myObject = [{name:'xxx',data:[1,2,3,4,5]},{name:'yyy',data:[5,4,3,2,1]}];

したがって、'name' と 'data' は動的変数ではありませんが、名前の値、データ配列、および myObject の長さは動的になります。

これをどこから始めればよいかよくわかりません。たくさんの分割とループを行う必要があると思いますが、提案は受け付けています。

4

2 に答える 2

2

まあ、それは非常に簡単に行うことができます:

var myObject = eval(myData);

ただし、関数のリスクに注意する必要がありevalます。値を Javascript 式として実行すると、文字列に含まれる有害なコードも実行されるため、文字列の内容を完全に制御できる場合にのみ使用してください。

形式を JSON に変更できれば、コード インジェクションのリスクなしに安全に解析できます。

var myData = '[{"name":"xxx","data":[1,2,3,4,5]},{"name":"yyy","data":[5,4,3,2,1]}]';

var myObject = $.parseJSON(myData);
于 2013-03-14T23:31:06.187 に答える
0

もしかして、

var myObject = eval('(' + myData + ')');

?

編集

その主な短所は、(JSON だけでなく) 任意の JavaScript コードを eval に入れることができることです (Chrome の F12 を使用すると、誰でもこれを悪用できます)。jQueryを使用しているため、最良の選択は

var myObject = $.parseJSON(myData);

ブラウザ間の互換性のため。

$.parseJSON

整形式の JSON 文字列を受け取り、結果の JavaScript オブジェクトを返します。不正な形式の JSON 文字列を渡すと、例外がスローされる場合があります。たとえば、次はすべて不正な JSON 文字列です。

{test: 1} (test does not have double quotes around it).

{'test': 1} ('test' is using single quotes instead of double quotes).

于 2013-03-14T23:28:08.483 に答える