`
zhouyrt
  • 浏览: 1162106 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字符串转换成json的三种方式

阅读更多

使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成js对象(JSON )。

 

ECMA-262(E3) 中没有将JSON概念写到标准中,还好在 ECMA-262(E5) 中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。

 

1,eval方式解析,恐怕这是最早的解析方式了。如下:

 

function strToJson(str){
     var json = eval('(' + str + ')');
     return json;
}

 

记得别忘了str两旁的小括号。

 

2,new Function形式,比较怪异哦。如下

 

function strToJson(str){
    var json = (new Function("return " + str))();
    return json;
}

 

3,使用全局的JSON对象,如下:

 

function strToJson(str){
    return JSON.parse(str);
}

 

目前 IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法,以下是部分资料:

 

http://blogs.msdn.com/ie/archive/2008/09/10/native-json-in-ie8.aspx

https://developer.mozilla.org/en/Using_JSON_in_Firefox

 

使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下

 

var str = '{name:"jack"}';
var obj = JSON.parse(str); // --> parse error
 

name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。

 

 

另见:Chrome中JSON.parse的特殊实现

 

 

 

分享到:
评论
18 楼 free_wxl 2012-08-03  
建议使用第三种方法,上面二种都会产生内存泄露。
17 楼 微雨骑驴入剑门 2012-03-22  
学习了,感谢lz分享
16 楼 4769946 2010-05-25  
zhouyrt 写道
nenyalanye_1 写道
第二种怎么理解? 这种JSON.parse(str); 要不要导什么js函数

不用,JSON是全局的直接使用。IE8/Firefox3.5+/Chrome4/Safari4/Opera10支持。


难道第二种IE67不支持的??
15 楼 Qiao.Gbin 2010-05-24  
创建一个script节点
然后script.text = data
这样可以吧
14 楼 satanest 2010-03-21  
第一种和第二种都有安全隐患哎
第三种在ie6,7支持不了
13 楼 chpublish1012 2010-03-18  
第一种如果不是json格式的会报错
后两种是什么情况呀
12 楼 greatghoul 2010-03-18  
呵呵,我也一起码在用第一种,不过第二种应该要比第一种快很多才是。
11 楼 zhouyrt 2010-03-18  
nenyalanye_1 写道
第二种怎么理解? 这种JSON.parse(str); 要不要导什么js函数

不用,JSON是全局的直接使用。IE8/Firefox3.5+/Chrome4/Safari4/Opera10支持。
10 楼 nenyalanye_1 2010-03-17  
第二种怎么理解? 这种JSON.parse(str); 要不要导什么js函数
9 楼 RednaxelaFX 2010-03-17  
zhouyrt 写道
RednaxelaFX 写道
John Resig老大推荐用Crockford的json2js,可以参考


呵,这个说法不对。
1,(EMCA262-V5)明确规定了对JSON本地支持,所以首选是原生态的JSON.parse方法
2, eval解析存在bug,见http://dev.jquery.com/ticket/4680

ps:jq1.4.1后加入了parseJSON方法,先使用JSON.parse解析,浏览器不支持则使用new Function形式解析。

json2.js本来就会在浏览器原生支持JSON.parse的时候选用原生版本,而且它跟ES5是API兼容的。在ES5还没完全普及的现状下,John Resig老大推荐用json2.js主要是为了现在就能用跟ES5兼容的API,日后能平滑过渡到ES5——只要去掉一个import就换过来了。
8 楼 zhouyrt 2010-03-17  
RednaxelaFX 写道
John Resig老大推荐用Crockford的json2js,可以参考


呵,这个说法不对。
1,(EMCA262-V5)明确规定了对JSON本地支持,所以首选是原生态的JSON.parse方法
2, eval解析存在bug,见http://dev.jquery.com/ticket/4680

ps:jq1.4.1后加入了parseJSON方法,先使用JSON.parse解析,浏览器不支持则使用new Function形式解析。
7 楼 jaxchow 2010-03-17  
每一种很不好!!!太危险了,AIR里不允许使用!还是第三种好
6 楼 xiaoyiz 2010-03-17  
qinshujin 写道
学了一年多的java web 开发今天又学了个新名词json
  请问下json是一种数据类型吗?

轻量级的数据传送格式 是一种文本格式 (保存数据和传送数据的一种方式)不是数据类型
5 楼 qinshujin 2010-03-16  
学了一年多的java web 开发今天又学了个新名词json
  请问下json是一种数据类型吗?
4 楼 RednaxelaFX 2010-03-16  
John Resig老大推荐用Crockford的json2js,可以参考
3 楼 linkobe 2010-03-16  
eval 那两个括号很邪恶,刚入门的时候被这个搞了半天。

而且YUI的compressor不推荐用此方式,对压缩混淆有影响
2 楼 zzhonghe 2010-03-16  
还有一种是解析字符串的key和value,并生成Object,这是Json官网比较推荐的一种方式,好处是提高了安全性。eval执行的代码有可能是恶意代码。

http://www.JSON.org/json_parse.js
1 楼 felsenlee 2010-03-16  
一直在用第一中,原来还有更优雅得写法

相关推荐

    字符串转换成json 的三种方式

    本文将详细介绍三种将字符串转换为JSON对象的方法,并探讨它们的优缺点。 1. **使用`eval`函数** 这是最传统的字符串到JSON的转换方法。`eval`函数能够执行一个字符串作为JavaScript代码,因此它可以解析JSON字符...

    JS如何把字符串转换成json

    这篇文章主要介绍了JS如何把字符串转换成json,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Json格式字符串 "{"rows":[{"date":"2018-11-19","money":"22",...

    js中将字符串转换成json的三种方式.docx

    本文将详细介绍三种将字符串转换为JSON的JS方法,并提供相关注意事项和浏览器兼容性信息。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人...

    字符串转换成json对象

    字符串转换成json对象

    将string类型xml字符串转为json字符串

    本篇文章将详细讲解如何将string类型的XML字符串转换为JSON字符串,并介绍相关的技术知识。 首先,理解XML和JSON的基本结构是至关重要的。XML是一种树形结构的标记语言,通过标签来定义元素和属性,例如: ```xml ...

    asp字符串转json对象类

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

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

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

    C#字符串和JSON数据类型相互转换

    总结起来,C#提供了两种主要的方式来处理JSON数据和字符串的相互转换:内置的`System.Text.Json`库和流行的第三方库`Newtonsoft.Json`。两者都能满足大部分开发需求,但在某些特定场景下,如处理复杂数据类型或追求...

    json字符串转换插件

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

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

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

    微信小程序-xml字符串转换json格式,适用于微信小程序

    xml字符串转换json格式 可用于微信小程序xml字符串转换json格式 安装 npm方式安装 npm install --save xmlstring2json bower方式安装 bower install xmlstring2json 用法示例: bookstore.xml文件 <title>...

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

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

    将json字符串转换为对象

    本篇文章将深入探讨如何将一个JSON格式的字符串转换为对象,这在处理网络请求响应、存储用户数据或者进行数据交换时是常见的操作。 标题提到的“将json字符串转换为对象”,实际上是在指JSON.parse()方法,这个方法...

    Json对象与json字符串互相转换处理工具

    Json对象与json字符串互相转换处理工具

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

    当你从服务器获取到一个JSON格式的响应或者需要将数据以JSON格式发送到服务器时,就需要将JSON字符串转换为JSON对象,或者反之。本篇将详细介绍如何在JavaScript中进行这样的操作。 首先,要将JSON字符串转换为JSON...

    js中将字符串转换成json的三种方式

    在JavaScript中,将字符串转换为JSON对象是常见的操作,特别是在处理服务器与客户端的数据交换时。在ECMAScript的早期版本中,JSON(JavaScript Object Notation)并未被正式纳入标准,但在ECMAScript 5(ECMA-262 ...

    json特殊字符串转换

    本篇文章将深入探讨JSON中的特殊字符串转换,以及如何正确处理它们。 一、JSON特殊字符与转义 在JSON中,字符串必须用双引号(")括起来。如果字符串内部需要包含双引号,或者其他特殊字符如反斜杠(\)、换行符...

    json转换jsonschema

    1. **解析JSON数据**:首先,需要解析JSON字符串为JavaScript对象。 2. **分析数据结构**:遍历JSON对象,识别其类型、属性、值等信息。 3. **构建JSON Schema**:根据分析结果,创建相应的JSON Schema对象。 4. **...

Global site tag (gtag.js) - Google Analytics