javascript JSON操作入门实例


Posted in Javascript onApril 16, 2010

JSON的规则很简单: 对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值' 对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html
这篇有个入门的文章,也可以参考下 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, 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); 
}
Javascript 相关文章推荐
javascript 模拟JQuery的Ready方法实现并出现的问题
Dec 06 Javascript
Jquery 点击按钮自动高亮实现原理及代码
Apr 25 Javascript
JS/Jquery判断对象为空的方法
Jun 11 Javascript
整理JavaScript创建对象的八种方法
Nov 03 Javascript
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
Vue.js如何优雅的进行form validation
Apr 07 Javascript
vue+mockjs模拟数据实现前后端分离开发的实例代码
Aug 08 Javascript
Vue 项目部署到服务器的问题解决方法
Dec 05 Javascript
浅谈React前后端同构防止重复渲染
Jan 05 Javascript
微信小程序开发之tabbar图标和颜色的实现
Oct 17 Javascript
JS深入学习之数组对象排序操作示例
May 01 Javascript
jquery实现简单每周轮换的日历
Sep 10 jQuery
javascript对象之内置对象Math使用方法
Apr 16 #Javascript
jQuery 类twitter的文本字数限制带提示效果插件
Apr 16 #Javascript
jQuery maxlength文本字数限制插件
Apr 16 #Javascript
一款js和css代码压缩工具[附JAVA环境配置方法]
Apr 16 #Javascript
jQuery对象与DOM对象之间的转换方法
Apr 15 #Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
Apr 15 #Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
Apr 15 #Javascript
You might like
模板引擎正则表达式调试小技巧
2011/07/20 PHP
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
PHP生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
php实现aes加密类分享
2014/02/16 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
浅谈JavaScript之事件绑定
2013/07/08 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
js面向对象之公有、私有、静态属性和方法详解
2015/04/17 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
Vue.js实现列表清单的操作方法
2017/11/15 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
2018/08/08 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
基于Python函数和变量名解析
2019/07/19 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
用Python开发app后端有优势吗
2020/06/29 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
日本无添加化妆品:HABA
2016/08/18 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
什么是Rollback Segment
2013/04/22 面试题
护士实习生自我鉴定范文
2013/12/10 职场文书
少先队入队活动方案
2014/02/08 职场文书
工作决心书范文
2014/03/11 职场文书
2015届大学生就业推荐表自我评价
2014/09/27 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
goland 设置project gopath的操作
2021/05/06 Golang
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA