JS中Json数据的处理和解析JSON数据的方法详解


Posted in Javascript onJune 29, 2016

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

JSON的规则很简单: 对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值' 对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html

举个简单的例子:

js 代码

function showJSON() { 
var user = 
{ 
"username":"andy", 
"age":20, 
"info": { "tel": "123456", "cellphone": "98765"}, 
"address": 
[ 
{"city":"beijing","postcode":"222333"}, 
{"city":"newyork","postcode":"555666"} 
] 
} 
alert(user.username); 
alert(user.age); 
alert(user.info.cellphone); 
alert(user.address[0].city); 
alert(user.address[0].postcode); 
}

这表示一个user对象,拥有username, age, info, address 等属性。

同样也可以用JSON来简单的修改数据,修改上面的例子

js 代码

function showJSON() { 
var user = 
{ 
"username":"andy", 
"age":20, 
"info": { "tel": "123456", "cellphone": "98765"}, 
"address": 
[ 
{"city":"beijing","postcode":"222333"}, 
{"city":"newyork","postcode":"555666"} 
] 
} 
alert(user.username); 
alert(user.age); 
alert(user.info.cellphone); 
alert(user.address[0].city); 
alert(user.address[0].postcode); 
user.username = "Tom"; 
alert(user.username); 
}

JSON提供了json.js包,下载http://www.json.org/json.js 后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。

js 代码

function showCar() { 
var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow"); 
alert(carr.toJSONString()); 
} 
function Car(make, model, year, color) { 
this.make = make; 
this.model = model; 
this.year = year; 
this.color = color; 
}

可以使用eval来转换JSON字符到Object

js 代码

function myEval() { 
var str = '{ "name": "Violet", "occupation": "character" }'; 
var obj = eval('(' + str + ')'); 
alert(obj.toJSONString()); 
}

或者使用parseJSON()方法

js 代码

function myEval() { 
var str = '{ "name": "Violet", "occupation": "character" }'; 
var obj = str.parseJSON(); 
alert(obj.toJSONString()); 
}

下面使用prototype写一个JSON的ajax例子。

先写一个servlet (我的是servlet.ajax.JSONTest1.java)就写一句话

java 代码

response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }");

再在页面中写一个ajax的请求

js 代码

function sendRequest() { 
var url = "/MyWebApp/JSONTest1"; 
var mailAjax = new Ajax.Request( 
url, 
{ 
method: 'get', 
onComplete: jsonResponse 
} 
); 
} 
function jsonResponse(originalRequest) { 
alert(originalRequest.responseText); 
var myobj = originalRequest.responseText.parseJSON(); 
alert(myobj.name); 
}

prototype-1.5.1.js中提供了JSON的方法,String.evalJSON(), 可以不使用json.js, 修改上面的方法

js 代码

function jsonResponse(originalRequest) { 
alert(originalRequest.responseText); 
var myobj = originalRequest.responseText.evalJSON(true); 
alert(myobj.name); 
}

JSON还提供了java的jar包 http://www.json.org/java/index.html API也很简单,下面举个例子

在javascript中填加请求参数

js 代码

function sendRequest() { 
var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow"); 
var pars = "car=" + carr.toJSONString(); 

var url = "/MyWebApp/JSONTest1"; 
var mailAjax = new Ajax.Request( 
url, 
{ 
method: 'get', 
parameters: pars, 
onComplete: jsonResponse 
} 
); 
}

使用JSON请求字符串就可以简单的生成JSONObject并进行解析,修改servlet添加JSON的处理(要使用json.jar)

java 代码

private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException { 
String s3 = request.getParameter("car"); 
try { 
JSONObject jsonObj = new JSONObject(s3); 
System.out.println(jsonObj.getString("model")); 
System.out.println(jsonObj.getInt("year")); 
} catch (JSONException e) { 
e.printStackTrace(); 
} 
response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }"); 
}

同样可以使用JSONObject生成JSON字符串,修改servlet

java 代码

private void doService(HttpServletRequest request, HttpServletResponse response) throws IOException { 
String s3 = request.getParameter("car"); 
try { 
JSONObject jsonObj = new JSONObject(s3); 
System.out.println(jsonObj.getString("model")); 
System.out.println(jsonObj.getInt("year")); 
} catch (JSONException e) { 
e.printStackTrace(); 
} 
JSONObject resultJSON = new JSONObject(); 
try { 
resultJSON.append("name", "Violet") 
.append("occupation", "developer") 
.append("age", new Integer(22)); 
System.out.println(resultJSON.toString()); 
} catch (JSONException e) { 
e.printStackTrace(); 
} 
response.getWriter().print(resultJSON.toString()); 
}

js 代码

function jsonResponse(originalRequest) { 
alert(originalRequest.responseText); 
var myobj = originalRequest.responseText.evalJSON(true); 
alert(myobj.name); 
alert(myobj.age); 
}

下面在重点给大家介绍JS中json数据的处理

1、 json数据结构(对象和数组)

json对象:var obj = {"name":"xiao","age":12};

json数组:var objArray = [{"name":"xiao","age":12},{"name":"xiao","age":12}];

2、 处理json数据,依赖文件有:jQuery.js

3、Note:数据传输过程中,json数据是以文本,即字符串格式形式存在;

JS语言操作的是JS对象;

所以json字符串与JS对象之间的转换是关键;

4、数据格式

Json字符串:var json_str = ‘{"name":"xiao","age":12}';

Josn对象:var obj = {"name":"xiao","age":12};

JS对象:Object {name: "xiao", age: 12}

5、类型转换

Json字符串——>JS对象,使用方法:

注明:

json_str、obj代表的是在本文子标题4中的数据类型;

obj = JSON.parse(json_str);
obj = jQuery.parseJSON(json_str);

Note:传入畸形json字符串(例如:‘{name:"xiao",age:12}'),会抛出异常;

Json字符串格式,严格格式:‘{"name":"xiao","age":12}'

JS对象——>Json字符串:

json_str = JSON. stringify(obj);

NOTE:

1、eval()是JS原生函数,使用该形式:eval(‘('+‘{name:"xiao",age:12}'+')'),并不安全,无法保证类型转换为JS对象;

2、上面3中方法,都经过chrome浏览器测试,下面是测试结果截图;

Json字符串——>JS对象;

JS中Json数据的处理和解析JSON数据的方法详解

JS对象——>Json字符串:

JS中Json数据的处理和解析JSON数据的方法详解

Javascript 相关文章推荐
javascript replace方法与正则表达式
Feb 19 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
Oct 30 Javascript
javascript 用函数语句和表达式定义函数的区别详解
Jan 06 Javascript
jQuery的cookie插件实现保存用户登陆信息
Apr 15 Javascript
Node.js实现Excel转JSON
Apr 24 Javascript
javascript html实现网页版日历代码
Mar 08 Javascript
vuejs指令详解
Feb 07 Javascript
BootStrap Fileinput上传插件使用实例代码
Jul 28 Javascript
vue2.0 实现导航守卫(路由守卫)
May 21 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
Sep 25 Javascript
p5.js临摹旋转爱心
Oct 23 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 Javascript
简单实现js间歇或无缝滚动效果
Jun 29 #Javascript
js精准的倒计时函数分享
Jun 29 #Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
Jun 29 #Javascript
RequireJS多页面应用实例分析
Jun 29 #Javascript
全面了解JS中的匿名函数
Jun 29 #Javascript
大型JavaScript应用程序架构设计模式
Jun 29 #Javascript
基于JS模仿windows文件按名称排序效果
Jun 29 #Javascript
You might like
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
php判断电脑访问、手机访问的例子
2014/05/10 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
表格 隔行换色升级版
2009/11/07 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
jquery插件实现鼠标经过图片右侧显示大图的效果(类似淘宝)
2013/02/04 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
Python实现模拟登录及表单提交的方法
2015/07/25 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Python猜数字算法题详解
2020/03/01 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
STP的判定过程
2012/10/01 面试题
新闻专业个人自我评价
2013/09/21 职场文书
《太阳》教学反思
2014/02/21 职场文书
卖房协议书
2014/04/11 职场文书
合作协议书怎么写
2014/04/18 职场文书
教室布置标语
2014/06/26 职场文书
单身证明格式样本
2015/06/15 职场文书
2019年入党思想汇报
2019/03/25 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS