如何将字符串转换为对象?我面临这个问题是因为我正在尝试使用“each”读取JSON字符串中的元素。
我的字符串如下所示。
jsonObj = "{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}"
我曾使用过 eval
,并且我已经使用了
var obj = $.parseJSON(jsonObj);
我也使用过
var obj= eval("(" + jsonObj + ")");
但它每次都返回null
把字符串用单引号括起来,应该可以正常工作。试试这个。
var jsonObj = '{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}';
var obj = $.parseJSON(jsonObj);
结合Saurabh Chandra Patel的答案和Molecular Man的观察,你应该得到类似这样的东西:
JSON.parse('{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}');
尝试:
var myjson = '{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}';
var newJ= $.parseJSON(myjson);
alert(newJ.TeamList[0].teamname);
$.parseJSON(myjson)
。它真的很有效。 - Frank Myat Thu您的字符串无效。双引号不能在双引号内部。您应该对它们进行转义:
"{\"TeamList\" : [{\"teamid\" : \"1\",\"teamname\" : \"Barcelona\"}]}"
'{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}'
简单回答,这个eval函数可以工作:
eval('var obj = {"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}')
没有使用eval:
你原来的字符串并不是一个实际的字符串。
jsonObj = "{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}"
最简单的方法是用单引号将所有内容包裹起来。
jsonObj = '"{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}"'
然后你可以将两个步骤结合起来,将其解析为JSON:
$.parseJSON(jsonObj.slice(1,-1))
'{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}'
- Mark Schultheiss