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

标签: 字符串 转化 json | 发表时间:2014-01-13 20:37 | 作者:MauerSu
出处:http://www.iteye.com
源:http://www.nowamagic.net/javascript/js_ConvertStringToJson.php
评:

使用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 }



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [字符串 转化 json] 推荐:

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

- - 互联网 - ITeye博客
源:http://www.nowamagic.net/javascript/js_ConvertStringToJson.php. 使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成js对象(JSON ). ECMA-262(E3) 中没有将JSON概念写到标准中,还好在 ECMA-262(E5) 中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法.

JSON对象和字符串之间的相互转换

- BeerBubble - WEB前端开发
比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象: var a={"name":"tom","sex":"男","age":"24"}; var b='{"name":"Mike","sex":"女","age":"29"}'; 在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法.

判断字符串是否是有效json对象(java + gson )

- - 改善
已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

js字符串转换为Json对象的三种写法

- - JavaScript - Web前端 - ITeye博客
在进行web前端开发时,经常会遇到将js字符串转换成Json对象的情况,这种转换有三种写法:. 1.使用eval()来进行解析(最原始的写法,但却很有效). 这种写法适合从数据库取出json字符串,然后需要进行转换为json对象的方式. 2.使用new function()的方式.  3.使用JSON的转换方法.

(转)JSON对象和字符串之间的相互转换

- - jackyrong
JSON对象和字符串之间的相互转换 http://www.css88.com/archives/3919. 时间:2011年07月30日作者:愚人码头查看次数:46,963 views评论次数:3条评论. 比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象:. var a={"name":"tom","sex":"男","age":"24"};.

当自定义数据属性为 json 格式字符串时 jQuery 的 data api 问题

- - 博客园_首页
jQuery 的 data API 实现方式 有缓存数据的效果. 使用 IE 7 (IE8+ 在控制台切换至IE7 模式),当DOM 节点有自定义数据属性时,检查 DOM 节点即可看到 形如 jQuery18305664906559272507 的属性,这便是 用于从数据存储对象中获取自定义数据的建.

json简介

- - ITeye博客
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成. 它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集. JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括C, C++, C#, Java, JavaScript, Perl, Python等)的习惯,这些特性使JSON成为理想的数据交换格式.

【Json扫盲篇】

- $n0wd0wn - 博客园-首页原创精华区
Json是数据交换的一种格式,与XML类似,但也有不同. 由于Json的轻便性,跨平台性和易于阅读,项目中经常用到. 所以说:Json是一种轻量级的数据交换格式. Json最简单的表现形式就键值对(key/value pairs),比如:. Json数组可以用来表示一个键key对应多个值value的情况,把这个value用{}包起来.

JSON与XML

- - CSDN博客推荐文章
   目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信大家都很熟悉. XML不仅能处理数字和文字等经典的数据,还可以管理文件,格式化,图像,音频,视频,以及更多.  JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成. 如今,我们经常会面临创建数据文件时,JSON和XML之间的选择.

Android——JSON使用

- - CSDN博客推荐文章
        JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.  Name:Value  格式:. 一个object可以由一个或多个无序的这种组合 组成:. 2.有序的(array):. array 是 值(value) 的有序集合,格式:. array的值(alue) 可以是是双引号括起来的字符串(string)、数值(number)、 true、 false、  null、 对象(object)或者 数组(array).