var response = '{"result":true , "count":1}';
var parsedJSON = eval('('+response+')');
var result=parsedJSON.result;
var count=parsedJSON.count;
alert('result:'+result+' count:'+count);
var myJson = '{"result": true, "count": 1}';
var obj = angular.fromJson(myJson);//equivalent to JSON.parse(myJson)
var backToJson = angular.toJson(obj);//equivalent to JSON.stringify(obj)
我只想添加有关AngularJS的内容以提供另一种选择 . 请注意,AngularJS并未正式支持Internet Explorer 8(以及旧版本),但通过经验,大多数内容似乎都运行良好 .
16 回答
如果你喜欢
您可以通过 (.) 点访问JsonObject的JSON元素:
一个简单的方法:
我以为
JSON.parse(myObject)
会起作用 . 但是根据浏览器的不同,使用eval('('+myObject+')')
可能是值得的 . 我建议注意的唯一问题是JSON中的多级列表 .如果您使用Dojo Toolkit:
大多数浏览器都支持JSON.parse(),这是在ECMA-262第5版(JavaScript所基于的规范)中定义的 . 它的用法很简单:
对于没有的浏览器,您可以使用json2.js实现它 .
如评论中所述,如果你已经在使用jQuery,那么有一个
$.parseJSON
函数可以映射到JSON.parse
(如果可用)或者在旧浏览器中使用eval
的形式 . 但是,这会执行额外的,不必要的检查,这也是由JSON.parse
执行的,所以为了获得最好的全面性能,我建议使用它,如下所示:这将确保您立即使用本机
JSON.parse
,而不是让jQuery在将字符串传递给本机解析函数之前对字符串执行完整性检查 .首先,您必须确保JSON代码有效 .
之后,如果可以的话,我建议使用jQuery或Prototype等JavaScript库,因为这些东西在这些库中得到了很好的处理 .
另一方面,如果您不想使用库并且可以保证JSON对象的有效性,我只需将该字符串包装在匿名函数中并使用eval函数 .
如果您从另一个不完全信任的源获取JSON对象,则不建议这样做,因为如果您愿意,eval函数允许使用renegade代码 .
以下是使用eval函数的示例:
如果您控制正在使用的浏览器,或者您不担心使用旧浏览器的人,则可以始终使用JSON.parse方法 .
这确实是未来的理想解决方案 .
如果您想对旧版浏览器使用JSON 3,可以使用以下条件有条件地加载:
现在,无论客户端运行什么浏览器,都可以使用标准的
window.JSON
对象 .如果你使用jQuery,它很简单:
以下示例将明确说明:
要么
您也可以使用
eval
功能 . 以下示例使用eval
函数:由于
JSON.parse
函数比eval函数更安全并且执行速度更快,因此我建议您使用JSON.parse
函数 .不使用库,您可以使用
eval
- 您应该使用的唯一时间 . 但是使用库更安全 .例如...
您可以像使用其他答案一样使用eval函数 . (不要忘记额外的大括号 . )当你深入挖掘时,你会知道为什么,或者只是使用jQuery函数
parseJSON
:要么
您可以使用以下代码 .
您可以使用
jsonObject.result
和jsonObject.count
访问这些字段 .如果你将一个字符串变量(格式正确的JSON字符串)传递给MVC @Viewbag的JSON.parse,它有双引号'"'作为引号,你需要在JSON.parse之前处理它(
jsonstring
)如果从外部站点获取此信息,使用jQuery的getJSON可能会有所帮助 . 如果它是一个列表,您可以使用$ .each迭代它
JSON.parse()将传递给函数的任何JSON String转换为JSON对象 .
为了更好地理解,请按F12打开浏览器的Inspect Element,然后转到控制台以编写以下命令:
现在运行命令:
您将获得输出为Object {result:true,count:1} .
为了使用该对象,您可以将其分配给变量,假设为
obj
:现在,通过使用
obj
和点( . )运算符,您可以访问JSON对象的属性 .尝试运行该命令
使用
parse()
方法的最简单方法:这是如何获取值的示例:
正如许多其他人所提到的,大多数浏览器都支持
JSON.parse
和JSON.stringify
.现在,我还想补充一点,如果你使用AngularJS(我强烈推荐),那么它还提供了你需要的功能:
我只想添加有关AngularJS的内容以提供另一种选择 . 请注意,AngularJS并未正式支持Internet Explorer 8(以及旧版本),但通过经验,大多数内容似乎都运行良好 .