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

三种方式 将字符串转化为Json

    博客分类:
  • JSON
 
阅读更多
源:http://www.nowamagic.net/javascript/js_ConvertStringToJson.php
http://www.jb51.net/article/25987.htm
评:



使用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所有浏览器中均抛异常,解析失败。而前两种方式则没问题。




使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成js对象(JSON )。ECMA-262(E3) 中没有将JSON概念写到标准中,还好在 ECMA-262(E5) 中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。

1. eval方式解析,恐怕这是最早的解析方式了。如下:
1 function strToJson(str){
2      var json = eval('(' + str + ')');
3      return json;
4 }

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

2. new Function形式,比较怪异哦。如下
1 function strToJson(str){
2     var json = (new Function("return " + str))();
3     return json;
4 }

3. 使用全局的JSON对象,如下:
1 function strToJson(str){
2     return JSON.parse(str);
3 }

目前 IE8/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法。

有时从数据库读出来的数据带有空格,使 eval 失效。这时只要将字符串中的空格去掉即可。
1 var result = xmlhttp.responseText;
2 text = result.replace(/\s/ig, ' ');
3 var json = eval('(' + text + ')');
4
5 gen3_title.innerHTML = json.title;
6 gen3.innerHTML = json.content;




JSON是一种便于操作使用的轻量级数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。

很多时候我们需要组装字符串为json对象,首先要组合字符串,然后转换为json对象,如下面的例子:
1 <script type="text/javascript">
2   <!--
3   var a=50,b="xxx";
4   var arr="{id:"+a+",name:'"+b+"'}";
5   //-->
6 </script>

组合成了字符串arr,下一步就是转换成对象了,很快我们会想到使用eval方法,但如果这样做转换会出现错误,今日偶就这样尝试了,那该如何转换成json对象呢?郁闷许久,之后在json官网提供的json.js文件中找到了解决办法,方法如下:

在字符串两端再加上括号然后eval就ok了。测试代码如下:
1 <script type="text/javascript">
2   <!--
3   var a=50,b="xxx";
4   var arr="{id:"+a+",name:'"+b+"'}";
5   arr=eval('('+arr+')')
6   alert(arr.name);
7   //-->
8 </script>

上面代码执行后会弹出“xxx”,说明已经成功转换为json对象了,一个似乎很简单的问题,不过还是郁闷了半天才解决掉,还是记到blog上以加深印象,也希望能帮助遇到此问题的朋友早日解除郁闷。

下面是一个详细的运用例子:
01 <html>
02 <head>
03 <title>AjaxTest</title>
04 <script type="text/javascript">
05 var xmlHttp;
06 function createXMLHttpRequest()
07 {
08     if(window.ActiveXObject)
09     {
10         xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
11     }
12     else if(window.XMLHttpRequest)
13     {
14         xmlHttp = new XMLHttpRequest();
15     }
16 }
17 function startRequest()
18 {
19     createXMLHttpRequest();
20     try
21     {
22         xmlHttp.onreadystatechange = handleStateChange;
23         xmlHttp.open("GET", "json.txt", true);
24         xmlHttp.send(null);
25     }
26     catch(exception)
27     {
28         alert("xmlHttp Fail");
29     }
30 }
31 function handleStateChange()
32 {  
33     if(xmlHttp.readyState == 4)
34     {      
35         if (xmlHttp.status == 200 || xmlHttp.status == 0)
36         {
37             var result = xmlHttp.responseText;
38             var json = eval("(" + result + ")");
39             alert(json.user);
40             alert(json.sex);
41         }
42     }
43 }
44 </script>
45 </head>
46 <body>
47     <div>
48         <input type="button" value="AjaxTest" onclick="startRequest();" />
49     </div>
50 </body>
51 </html>

其中json.txt为:
1 {
2     "user":"cck",
3     "sex":"name"
4 }

分享到:
评论

相关推荐

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

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

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

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

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

    在JavaScript中,我们有内置的方法可以方便地将字符串转换为JSON对象。 **方法一:`JSON.parse()`** `JSON.parse()`是JavaScript内置的函数,用于将一个JSON格式的字符串解析成一个JavaScript值(对象或原始值)。...

    验证字符串是否为json格式

    在JavaScript中,可以使用`JSON.parse()`将JSON字符串转化为JavaScript对象,从而可以访问和修改其属性。例如: ```javascript let jsonString = '{"name":"John","age":30,"city":"New York"}'; let jsonObject = ...

    json字符串转化为list泛型

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

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

    总的来说,json2.js是解决JSON处理兼容性问题的一个工具,它提供了一种安全且标准化的方式来在JavaScript中进行JSON字符串与对象之间的转换,尤其对于那些不支持原生JSON操作的老版本浏览器而言。

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

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

    JS如何把字符串转换成json

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

    Jquery json2.js 将字符串转化为json对象

    自动将字符串转化为Json对象 使用方法Json parse 在前端使用更方便

    asp字符串转json对象类

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

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

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

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

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

    将json字符串转换为对象

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

    json字符串转换插件

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

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

    在Java开发中,将Java对象转换为JSON字符串或字符串数组是一项常见的任务,特别是在与前端交互、数据存储或者网络传输时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

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

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

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

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

    json转化工具,字符串格式化工具,方便又快捷

    - **字符串到JSON转换**:将普通的字符串转化为标准的JSON格式,自动识别并处理非法字符和格式。 - **格式化JSON**:接收未格式化的JSON字符串,将其转换为具有缩进和换行的易读格式。 - **验证JSON**:检查输入...

    C# json格式解析,Json格式字符串与C#对象相互转换,类库+使用案例,注释详细

    /// 将Json字符串解析为C#中的对象 /// Json格式中的字符串值识别 /// 将Json字符串解析为Dictionary, dynamic&gt;对象。 /// 将Json字符串解析为dynamic[]对象。 /// Dictionary类型对象转换为Json格式字符串 /// C#...

    C语言实现的 json格式字符串与结构体自动相互转化

    将JSON字符串转化为结构体,意味着解析JSON文本并将其内容映射到预先定义的C语言结构体中;反之,将结构体转化为JSON字符串则是将结构体中的数据转换为JSON格式的文本,便于在网络间传递或存储。 关于“反射”这一...

Global site tag (gtag.js) - Google Analytics