在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:

1.一种为使用eval()函数。

2. 使用Function对象来进行返回解析。

使用eval函数来解析,并且使用jquery的each方法来遍历

用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明。

这里首先给出JSON字符串集,字符串集如下:

代码如下:

复制代码代码如下:

var data="

{

root:

[

{name:'1',value:'0'},

{name:'6101',value:'北京市'},

{name:'6102',value:'天津市'},

{name:'6103',value:'上海市'},

{name:'6104',value:'重庆市'},

{name:'6105',value:'渭南市'},

{name:'6106',value:'延安市'},

{name:'6107',value:'汉中市'},

{name:'6108',value:'榆林市'},

{name:'6109',value:'安康市'},

{name:'6110',value:'商洛市'}

]

}";

这里以jquery异步获取的数据类型——json对象和字符串为依据,分别介绍两种方式获取到的结果处理方式。

1.对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次。这种方式也适合以普通javascipt方式获取json对象,以下举例说明:

var dataObj=eval("("+data+")");//转换为json对象

为什么要 eval这里要添加 “("("+data+")");//”呢?

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:

复制代码代码如下:

alert(eval("{}"); // return undefined

alert(eval("({})");// return object[Object]

对于这种写法,在JS中,可以到处看到。

如: (function()) {}(); 做闭包操作时等。

--------------------------------------------------------------------------------

复制代码代码如下:

alert(dataObj.root.length);//输出root的子对象数量

$.each(dataObj.root,fucntion(idx,item){

if(idx==0){

return true;

}

//输出每个root子对象的名称和值

alert("name:"+item.name+",value:"+item.value);

})

注:对于一般的js生成json对象,只需要将$.each()方法替换为for语句即可,其他不变。

2.对于服务器返回的JSON字符串,如果jquery异步请求将type(一般为这个配置属性)设为“json”,或者利用$.getJSON()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可,这里以$.getJSON方法为例说明数据处理方法:

复制代码代码如下:

$.getJSON("http://www.phpzixue.cn/",{param:"gaoyusi"},function(data){

//此处返回的data已经是json对象

//以下其他操作同第一种情况

$.each(data.root,function(idx,item){

if(idx==0){

return true;//同countinue,返回false同break

}

alert("name:"+item.name+",value:"+item.value);

});

});

这里特别需要注意的是方式1中的eval()方法是动态执行其中字符串(可能是js脚本)的,这样很容易会造成系统的安全问题。所以可以采用一些规避了eval()的第三方客户端脚本库,比如JSON in JavaScript就提供了一个不超过3k的脚本库。

第二种解析方式就是使用Function对象来完成,它的典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析

复制代码代码如下:

var json='{"name":"CJ","age":18}';

data =(new Function("","return "+json))();

此时的data就是一个会解析成一个 json对象了.

VBScript把json字符串解析成json对象的2个方法

这篇文章主要介绍了VBScript把json字符串解析成json对象的2个方法,本文通过MSScriptControl.ScriptControl和jscript实现,需要的朋友可以参考下 asp/v ...

JS中将JSON的字符串解析成JSON数据格式《转》

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

js中把JSON字符串转换成JSON对象最好的方法

在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...

JavaScript:将key和value不带双引号的JSON字符串转换成JSON对象的方法

遇到相关的问题,花了两天的时间来解决,深感来之不易,所以做如下的总结,希望遇到此问题的码农能更快的找到解决办法! var jsonArr= [{col:TO_CHAR(HZRQ,'YYYYMM'),t ...

json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值

一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...

特殊字符导致json字符串转换成json对象出错

在对数据库取出来的数据(特别是描述信息)里面含有特殊字符的话,使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问 ...

json字符串转成 json对象 json对象转换成java对象

import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 ...

C#将json字符串解析成对象

首先我们在客户端生成json字符串,通过ajax把该字符串传到服务器端   //这是一个以id,email,age的json字符串   var jdata="[{\"id\&quo ...

[转载]将json字符串转换成json对象

例如: JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; J ...

随机推荐

VS2010 验证时出错。HRESULT = '8000000A'

验证时出错.HRESULT = '8000000A' 在VS2010中,当为Windows窗体应用程序添加一个安装项目后,如果项目生成时出现以下错误: 验证时发生错误.HRESULT = '80000 ...

JS网页顶部弹出可关闭广告图层

将html代码确析成json数据格式,JSON字符串解析成JSON数据格式相关推荐

  1. jQuery.parseJSON(json)方法将字符串转换成js对象

    原文地址为: jQuery.parseJSON(json)方法将字符串转换成js对象 概述 接受一个JSON字符串,返回解析后的对象. 传入一个畸形的JSON字符串会抛出一个异常.比如下面的都是畸形的 ...

  2. 将JSON格式的字符串转换成List集合引入gson 的jar包

    将JSON格式的字符串转换成List集合 排错 IDEA中java文件出现小黄色的J . 打开项目工程的工程结构设置(快捷键:ctrl+alt+shift+s),如图中所示 . . 选择第一栏的Mod ...

  3. 【解决】json字符串解析失败json.decoder.JSONDecodeError

    解决json解析失败报错:json.decoder.JSONDecodeError 最近遇到一个json字符串解析失败的问题,原因是json里面的":这个两个符合和一些特殊符号在搞鬼,报错如 ...

  4. 实现迷你解析器把字符串解析成NestInteger类 Mini Parser

    为什么80%的码农都做不了架构师?>>>    问题: Given a nested list of integers represented as a string, implem ...

  5. 如Java8的LocalDate与Date相互转换、ZonedDateTime等常用操作包含多个使用示例、Java8时区ZoneId的使用方法、Java8时间字符串解析成类

    下面将依次介绍 Date转Java8时间类操作 ,Java8时间类LocalDate常用操作(如获得当前日期,两个日期相差多少天,下个星期的日期,下个月第一天等) 解析不同时间字符串成对应的Java8 ...

  6. c语言json数据转换成字符串,Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)...

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  7. 0字符串 if mapper test_mybatis的if判断条件将字符串解析成了数字

    mybatis可以帮我们自动映射字段,在mapper.xml文件中,我们可以不用去写jdbcType来明确指定数据类型,它会自动解析成相对应的java数据类型,每次在使用了mybatis-genera ...

  8. 组装复杂json请求数据和解析复杂json数据

    在项目中有很多的接口对接的问题,于是就遇到了客户提供的各种奇葩的请求体.说一下最近遇到的一个复杂的json格式请求数据如下: {"bizData": {"userList ...

  9. Oracle的字符串转换成二进制,将二进制字符串解析为文本/字符

    我可能忽略了一些愚蠢的东西,但我从来没有必要在代码中处理二进制文件,并认为在加密程序中练习它是个好主意, .长话短说,我能够将字符串转换为二进制(以字符串的形式),但无法弄清楚如何做相反的操作.将二进 ...

最新文章

  1. html编写个人博客_第 06 篇:博客从“裸奔”到“有皮肤”
  2. python android自动化元素定位_linux下Appium+Python移动应用自动化测试实战---3.手把手教你定位元素编写测试用例...
  3. Linux操作系统下三种配置环境变量的方法(linux下几种profile执行顺序)
  4. UVA11019 Martix Matcher --- AC自动机
  5. 漫步最优化十八——点到集合的映射
  6. 微信上线“拍一拍”功能,结果被网友激情吐槽...
  7. 系统大小端的头文件定义
  8. python迭代器是什么意思_理解Python的迭代器
  9. Qt5开发及实例学习之监听目录
  10. 二叉树:层序遍历登场!
  11. C#-is and as
  12. 访问页面出现404的原因
  13. java网店系统 开源_网店系统javashop发布其开源框架,遵循GPL协议
  14. 华为od与中软外包哪个更好_记录下入职中软一个月(外包华为
  15. 20款优秀的免费代码编辑器
  16. ES 数据聚合、数据同步、集群
  17. 禁止每次打开edge自动在开始菜单创建Microsoft Edge 的 Edge 栏
  18. Java获取打印机列表
  19. mong命令学习记录
  20. 使用Python+selenium实例化Microsoft Edge或Chrome浏览器对象和常见的报错

热门文章

  1. Sublime Text 3 快捷键汇总
  2. Surf特征提取分析
  3. centos 忘记 root 密码
  4. 几种主要的Linux版本之间的比较
  5. java程序员高薪持续的原因有哪些
  6. ADS_LPC2103开发板SPI 4位数码管测试试验
  7. 【转】jmeter响应结果乱码问题
  8. 关于无线的Idle Timeout和Session Timeout
  9. python控制窗口缩放
  10. Centos 7安装与配置chef