将字符串转换为JSON对象

35

如何将字符串转换为对象?我面临这个问题是因为我正在尝试使用“each”读取JSON字符串中的元素。

我的字符串如下所示。

jsonObj = "{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}"

我曾使用过 eval,并且我已经使用了

var obj = $.parseJSON(jsonObj);

我也使用过

var obj= eval("(" + jsonObj + ")");

但它每次都返回null


1
你尝试过使用单引号吗?'{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}' - Mark Schultheiss
可能是重复的问题 https://dev59.com/fHVD5IYBdhLWcg3wO5AD?rq=1 - mas_oz2k1
7个回答

70

把字符串用单引号括起来,应该可以正常工作。试试这个。

var jsonObj = '{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}';
var obj = $.parseJSON(jsonObj);

演示


1
感谢@ShankarSangoli。 "$.parseJSON()"很好用。我之前尝试使用"parseJSON()",但并没有真正帮助到我。 - simplysiby

18

11

尝试:

var myjson = '{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}';
var newJ= $.parseJSON(myjson);
    alert(newJ.TeamList[0].teamname);

非常感谢您的代码 $.parseJSON(myjson)。它真的很有效。 - Frank Myat Thu

4

您的字符串无效。双引号不能在双引号内部。您应该对它们进行转义:

"{\"TeamList\" : [{\"teamid\" : \"1\",\"teamname\" : \"Barcelona\"}]}"

或者使用单引号和双引号。
'{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}'

4

3

简单回答,这个eval函数可以工作:

eval('var obj = {"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}')

1

没有使用eval:

你原来的字符串并不是一个实际的字符串。

jsonObj = "{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}"

最简单的方法是用单引号将所有内容包裹起来。

 jsonObj = '"{"TeamList" : [{"teamid" : "1","teamname" : "Barcelona"}]}"'

然后你可以将两个步骤结合起来,将其解析为JSON:

 $.parseJSON(jsonObj.slice(1,-1))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接