1642 javascript parsing json
我想在JavaScript中解析JSON字符串.响应是这样的
var response = '{"result":true,"count":1}';
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得的值result
,并count
从这个?
And*_*y E 1946
大多数浏览器都支持JSON.parse()
,这是在ECMA-262第5版(JavaScript所基于的规范)中定义的.它的用法很简单:
const json = '{ "fruit": "pineapple", "fingers": 10 }';
const obj = JSON.parse(json);
console.log(obj.fruit, obj.fingers);
Run Code Online (Sandbox Code Playgroud)
对于没有的浏览器,您可以使用json2.js实现它.
如评论中所述,如果您已经在使用jQuery,那么有一个JSON
函数可以映射到JSON.parse()
可用的或JSON.parse()
旧版浏览器中的一种形式.但是,这会执行额外的,不必要的检查也会执行JSON.parse()
,因此为了获得最好的全面性能,我建议使用它,如下所示:
const json = '{ "fruit": "pineapple", "fingers": 10 }';
const obj = JSON.parse(json);
console.log(obj.fruit, obj.fingers);
Run Code Online (Sandbox Code Playgroud)
这将确保您$.parseJSON()
立即使用native ,而不是让jQuery在将字符串传递给本机解析函数之前对字符串执行完整性检查.
小智 101
首先,您必须确保JSON代码有效.
之后,如果可以的话,我建议使用jQuery或Prototype等JavaScript库,因为这些东西在这些库中得到了很好的处理.
另一方面,如果您不想使用库并且可以保证JSON对象的有效性,我只需将该字符串包装在匿名函数中并使用eval函数.
如果您从另一个不完全信任的源获取JSON对象,则不建议这样做,因为如果您愿意,eval函数允许使用renegade代码.
以下是使用eval函数的示例:
var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);
Run Code Online (Sandbox Code Playgroud)
如果您控制正在使用的浏览器,或者您不担心使用旧浏览器的人,则可以始终使用JSON.parse方法.
这真的是未来的理想解决方案.
小智 59
如果从外部站点获取此信息,使用jQuery的getJSON可能会有所帮助.如果它是一个列表,你可以使用$ .each迭代它
$.getJSON(url, function (json) {
alert(json.result);
$.each(json.list, function (i, fb) {
alert(fb.result);
});
});
Run Code Online (Sandbox Code Playgroud)
huw*_*ler 36
如果您想为旧版浏览器使用JSON 3,可以使用以下条件有条件地加载它:
<script>
window.JSON ||
document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr'+'ipt>');
</script>
Run Code Online (Sandbox Code Playgroud)
现在,window.JSON
无论客户端运行什么浏览器,都可以使用标准对象.
Jok*_*e10 36
以下示例将明确说明:
let contactJSON = '{"name":"John Doe","age":"11"}';
let contact = JSON.parse(contactJSON);
console.log(contact.name + ", " + contact.age);
// Output: John Doe, 11
Run Code Online (Sandbox Code Playgroud)
要么
您也可以使用该__CODE__
功能.以下示例使用以下__CODE__
函数:
let contactJSON = '{"name":"John Doe","age":"11"}';
let contact = JSON.parse(contactJSON);
console.log(contact.name + ", " + contact.age);
// Output: John Doe, 11
Run Code Online (Sandbox Code Playgroud)
由于该__CODE__
函数比eval函数更安全并且执行速度更快,我建议您使用__CODE__
函数.
Jen*_*eaf 30
如果您通过从MVC @Viewbag一个字符串变量(一个结构良好的JSON字符串)JSON.parse有双引号,""",因为报价,你需要JSON.parse之前处理它(jsonstring
)
var jsonstring = '@ViewBag.jsonstring';
jsonstring = jsonstring.replace(/"/g, '"');
Run Code Online (Sandbox Code Playgroud)
Tej*_*eja 28
您可以像使用其他答案一样使用eval函数.(不要忘记额外的大括号.)当你深入挖掘时,你会知道为什么,或者只是使用jQuery函数parseJSON
:
var response = '{"result":true , "count":1}';
var parsedJSON = $.parseJSON(response);
Run Code Online (Sandbox Code Playgroud)
要么
您可以使用以下代码.
var response = '{"result":true , "count":1}';
var jsonObject = JSON.parse(response);
Run Code Online (Sandbox Code Playgroud)
您可以使用jsonObject.result
和访问字段jsonObject.count
.
Jor*_*sys 25
使用parse()
方法最简单的方法:
var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);
Run Code Online (Sandbox Code Playgroud)
这是如何获取值的示例:
var myResponseResult = JsonObject.a;
var myResponseCount = JsonObject.b;
Run Code Online (Sandbox Code Playgroud)
小智 23
JSON.parse()将传递给函数的任何JSON String转换为JSON对象.
为了更好地理解,请按F12以打开浏览器的Inspect Element,然后转到控制台以编写以下命令:
var response = '{"result":true,"count":1}'; // Sample JSON object (string form)
JSON.parse(response); // Converts passed string to a JSON object.
Run Code Online (Sandbox Code Playgroud)
现在运行命令:
console.log(JSON.parse(response));
Run Code Online (Sandbox Code Playgroud)
您将获得输出为Object {result:true,count:1}.
为了使用该对象,您可以将其分配给变量,让我们说obj
:
var obj = JSON.parse(response);
Run Code Online (Sandbox Code Playgroud)
现在,通过使用obj
和(.)运算符,您可以访问JSON对象的属性.
尝试运行该命令
console.log(obj.result);
Run Code Online (Sandbox Code Playgroud)
El *_*oco 20
不使用库,您可以使用eval
- 您应该使用的唯一时间.但是使用库更安全.
例如...
var response = '{"result":true , "count":1}';
var parsedJSON = eval('('+response+')');
var result=parsedJSON.result;
var count=parsedJSON.count;
alert('result:'+result+' count:'+count);
Run Code Online (Sandbox Code Playgroud)
小智 19
如果你喜欢
var response = '{"result":true,"count":1}';
var JsonObject= JSON.parse(response);
Run Code Online (Sandbox Code Playgroud)
您可以通过带有(.)点的JsonObject访问JSON元素:
JsonObject.result;
JsonObject.count;
Run Code Online (Sandbox Code Playgroud)
ha9*_*3ar 12
我以为JSON.parse(myObject)
会工作.但根据浏览器的不同,它可能值得使用eval('('+myObject+')')
.我建议注意的唯一问题是JSON中的多级列表.
小智 11
一个简单的方法:
var data = '{"result":true,"count":1}';
var json = eval("[" +data+ "]")[0]; // ;)
Run Code Online (Sandbox Code Playgroud)
小智 8
正如许多其他人所提到的,大多数浏览器支持JSON.parse
和JSON.stringify
.
现在,我还要补充一点,如果您使用的是AngularJS(我强烈推荐),那么它还提供了您需要的功能:
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)
Run Code Online (Sandbox Code Playgroud)
我只想添加有关AngularJS的内容以提供另一种选择.请注意,AngularJS并未正式支持Internet Explorer 8(以及旧版本),但通过经验,大多数内容似乎都运行良好.
如果您使用Dojo Toolkit:
require(["dojo/json"], function(JSON){
JSON.parse('{"hello":"world"}', true);
});
Run Code Online (Sandbox Code Playgroud)
小智 6
如果你使用jQuery,它很简单:
var response = '{"result":true,"count":1}';
var obj = $.parseJSON(response);
alert(obj.result); //true
alert(obj.count); //1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1864311 次 |
最近记录: |