我正在从隐藏的 html 输入字段中检索对象数组。我得到的字符串是:
"{"id":"1234","name":"john smith","email":"jsmith@blah.com"},{"id":"4431","name":"marry doe","email":"mdoe@blah.com"}"
现在我需要再次将其作为对象数组传递。如何将此字符串转换为对象数组?
我正在从隐藏的 html 输入字段中检索对象数组。我得到的字符串是:
"{"id":"1234","name":"john smith","email":"jsmith@blah.com"},{"id":"4431","name":"marry doe","email":"mdoe@blah.com"}"
现在我需要再次将其作为对象数组传递。如何将此字符串转换为对象数组?
var array_of_objects = eval("[" + my_string + "]");
这会将字符串作为代码执行,这就是我们需要添加 [] 以使其成为对象的原因。这也是 eval 为数不多的合法用途之一,因为它是最快和最简单的方法。:D
假设它str
拥有有效的 JSON 语法,您可以简单地调用eval(str)
.
出于安全原因,最好使用JSON 解析器,如下所示:
JSON.parse(str);
请注意,str
必须将其包装[]
为有效的 JSON 数组。
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 }
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);
}