5

非表示のhtml入力フィールドからオブジェクトの配列を取得しています。私が取得している文字列は次のとおりです。

"{"id":"1234","name":"john smith","email":"jsmith@blah.com"},{"id":"4431","name":"marry doe","email":"mdoe@blah.com"}"

ここで、これをオブジェクトの配列として再度渡す必要があります。この文字列をオブジェクトの配列に変換するにはどうすればよいですか?

4

4 に答える 4

14
var array_of_objects = eval("[" + my_string + "]");

これにより、文字列がコードとして実行されます。そのため、[]を追加してオブジェクトにする必要があります。これは、最も速くて簡単な方法として、evalの数少ない正当な使用法の1つでもあります。:D

于 2010-04-26T00:42:49.623 に答える
9

strが有効なJSON構文を保持していると仮定すると、単純にを呼び出すことができますeval(str)

セキュリティ上の理由から、次のようなJSONパーサーを使用することをお勧めします。

JSON.parse(str);

有効なJSON配列になるには、strラップインする必要があることに注意してください。[]

于 2010-04-26T00:42:26.757 に答える
1

不正な形式の文字列オブジェクト、APIからのGET、古いコードなどが多数あります。不正な形式は、コードのエラーをドロップすることを意味するのではなく、JSON.parse()の入力のエラーをドロップします。

// not " wrapped key syntax
var str = "{ a: 2 }";
console.log( JSON.parse( str ) );
//  SyntaxError: JSON.parse: expected property name or '}' at line 1 column 3 of the JSON data

// 'key', or 'value' syntax
var str = " { 'a': 2 } ";
console.log( JSON.parse( str ) );
// SyntaxError: JSON.parse: expected property name or '}' at line 1 column 3 of the JSON data

//syntax OK
var str = '{ "a": 2 }';
console.log( JSON.parse( str ) );
// Object { a: 2 }

解決策があります:

// Convert any-formatted object string to well formatted object string:
var str = "{'a':'1',b:20}";
console.log( eval( "JSON.stringify( " + str + ", 0, 1 )" ) );

/* 
"{
 "a": "1",
 "b": 20
}"
*/

// Convert any-formatted object string to object:
console.log( JSON.parse(  eval( "JSON.stringify( " + str + ", 0, 1 )" ) ) );
// Object { a: "1", b: 20 }
于 2020-03-26T14:50:47.307 に答える
0
var str=eval([{'id':'1','txt':'name1'},{'id':'2','txt':'name2'},{'id':'3','txt':'name3'}])
for(var i=0;i<str.length;i++)
{
alert(str[i].txt);
}
于 2014-03-30T07:13:27.143 に答える