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 为数不多的合法用途之一,因为它是最快和最简单的方法。:D

于 2010-04-26T00:42:49.623 回答
9

假设它str拥有有效的 JSON 语法,您可以简单地调用eval(str).

出于安全原因,最好使用JSON 解析器,如下所示:

JSON.parse(str);

请注意,str必须将其包装[]为有效的 JSON 数组。

于 2010-04-26T00:42:26.757 回答
1

There are many bad formatted string object, GET from API, old code, etc. Bad format doesn't means it drops error in code, but drops error for input of 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 }

There is a solution:

// 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 回答