`

Json字符串转换为JS对象方法

 
阅读更多

一般JSON字符串转换为JS对象,都使用

var jsonStr="{a:1}";
var jsonObj = eval("("+jsonStr+")");

今天学习JQuery源码看到一下方法,原来还可以这样解析JSON字符串:

 	parseJSON: function( data ) {
if ( typeof data!== "string" ||!data ) {
return null;
}

// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim( data );

// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if ( /^[/],:{}/s]*$/.test(data.replace(///(?:["////bfnrt]|u[0-9a-fA-F]{4})/g, "@")
.replace(/"[^"///n/r]*"|true|false|null|-?/d+(?:/./d*)?(?:[eE][+/-]?/d+)?/g, "]")
.replace(/(?:^|:|,)(?:/s*/[)+/g, "")) ) {

// Try to use the native JSON parser first
return window.JSON && window.JSON.parse?
window.JSON.parse( data ):
(new Function("return " + data))();

} else {
jQuery.error( "Invalid JSON: " + data );
}
}

这个方法核心的代码就是:

(new Function("return " + data))();

它使用了Function()构造函数。讲json字符串作为函数执行数据传入,定义后立即执行该函数,此时这个函数会返回JSON对象

我做了一个测试,用这个方法解析JSON字符串的效率要比用Eval解析快好几百倍

var jsonStr ="{";
for(var i=0;i<10000;i++){
jsonStr+="a"+i+":"+i+","
}
jsonStr = jsonStr.substring(0,jsonStr.length-1);
jsonStr+="}";

var date = new Date();
var start = date.getTime()
//var boj = (new Function("return "+jsonStr ))();
var boj = eval("("+jsonStr+")");
var date1 = new Date();
console.info(date1.getTime()-start);

我用firfox测试结果,用eval解析花费了7234毫秒,而用函数这种方法,用了55毫秒,太神奇了

分享到:
评论

相关推荐

    json字符串转换c++类对象

    在C++编程中,将JSON字符串转换为C++类对象是一项常见的任务,特别是在处理网络通信、数据存储或配置文件时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析...

    将json字符串转换为对象

    标题提到的“将json字符串转换为对象”,实际上是在指JSON.parse()方法,这个方法在JavaScript中用于将一个合法的JSON字符串转化为JavaScript对象。例如,我们有一个如下的JSON字符串: ```json let jsonString = '...

    js json字符串转对象

    本文主要关注如何将JSON字符串转换为JavaScript对象。 1. **JSON.stringify() 和 JSON.parse()** `JSON.stringify()` 是JavaScript提供的一个内置函数,用于将JavaScript对象转换为JSON字符串。这在需要在网络间...

    解析Json字符串直接转换为对象(包括多层List集合 嵌套)所用jar包

    在上述代码中,`readValue`方法用于将JSON字符串转换为指定的Java类型。通过这种方式,我们可以轻松地处理复杂的JSON结构,包括多层嵌套和List集合。 此外,Jackson库还提供了其他功能,如反序列化配置、类型转换、...

    js 将json字符串转换为json对象

    首先,要将JSON字符串转换为JSON对象,你可以使用`JSON.parse()`方法。这个内置的方法解析JSON字符串并返回相应的JavaScript值,如对象、数组、字符串、数字等。例如: ```javascript var jsonString = '{"name":...

    json2.js 字符串转转json对象工具

    1. `JSON.parse()`方法用于将一个JSON字符串转换为JavaScript对象。在JSON中,数据被表示为键值对(key-value pairs)的集合,而JavaScript对象正是以这种方式存储数据。例如,如果你有一个JSON字符串`'{"name": ...

    json字符串转换插件

    通过这种方式,你可以使用`JsonUtils.jsonToJavaObject()`方法将JSON字符串转换为任意指定类型的Java对象,而`JsonUtils.javaObjectToJson()`则将Java对象转换为JSON字符串。 总之,JSON字符串转换插件是Java开发中...

    java对象转换为json字符串或字符串数组

    除了序列化,`json-lib`还支持反序列化,即将JSON字符串转换回Java对象: ```java Person deserializedPerson = (Person) JSONSerializer.toJava(jsonString); ``` 6. JSONPath和JSONSchema: 在实际应用中,...

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    asp字符串转json对象类

    本知识点主要关注如何将ASP中的字符串转换为JSON对象,特别地,这个过程是通过原生的VBScript(Visual Basic Script)实现的,而不是依赖于第三方库。 首先,我们需要理解VBScript中的JSON解析概念。由于ASP.NET...

    利用Google Gson实现JSON字符串和对象之间相互转换

    以下是一个简单的例子,展示如何将JSON字符串转换为Java对象: ```java class User { private String name; private int age; // getters and setters... } String jsonString = "{\"name\":\"John\", \"age\...

    模仿json,根据对象生成json字符串,根据字符串生成对象

    同样以`com.google.gson`为例,我们可以使用`fromJson()`方法将JSON字符串转换回Java对象。在上面的例子中,如果我们已经有一个JSON字符串,可以这样做: ```java String jsonString = "{\"name\":\"Alice\",\"age\...

    由php对象生成json字符串 把php对象变成json字符串.zip

    总的来说,将PHP对象转换为JSON字符串是通过json_encode()函数完成的,对于对象,可以考虑实现JsonSerializable接口或使用特定选项来控制序列化行为。在实际开发中,还要注意错误处理和编码选项的设置,以确保数据...

    JSON 字符串 与 java 对象的转换

    // 把JSON字符串转换为JAVA对象数组 JSONArray json = JSONArray.fromObject(personStr); List&lt;InvoidPerson&gt; persons = (List) JSONArray.toCollection(json, InvoidPerson.class); ``` #### 4. JSON字符串转换为...

    json转换.docx

    其次,可以使用 JSON.parse() 方法,该方法也可以将 JSON 字符串转换为 JavaScript 对象,例如: ``` var object = JSON.parse(jsonTxt); ``` 此外,如果我们使用 jQuery 库,可以使用 $.parseJSON() 方法将 JSON ...

    忽略字段的首字母大小写,将json字符串转成javabean对象

    忽略字段的首字母大小写,将json字符串转成javabean对象,解决Java对象中属性中首字母大写而取不到值(取到的值为空)的问题 忽略字段的首字母大小写,将json字符串转成List,解决Java对象中属性中首字母大写而取不...

    json字符串转化为list泛型

    在Java编程中,我们经常需要将JSON格式的数据转换为Java对象,这通常涉及到将JSON字符串转化为List泛型。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    经典ASP读取JSON字符串/生成JSON对象,数组对象等。

    通过引入这个组件,可以将JSON字符串转换为ASP变量,便于操作。例如: ```vbscript Dim jsonStr, jsonObj jsonStr = '{"name": "John", "age": 30}' Set jsonObj = New ASPJSON jsonObj.LoadJSON jsonStr ...

    利用java反射将json字符串转成对象.zip

    在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...

Global site tag (gtag.js) - Google Analytics