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 相关文章推荐
JS添加删除一组文本框并对输入信息加以验证判断其正确性
Apr 11 Javascript
取得元素的左和上偏移量的方法
Sep 17 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
Jun 01 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
Feb 22 Javascript
javascript中this用法实例详解
Apr 06 Javascript
基于Bootstrap的标签页组件及bootstrap-tab使用说明
Jul 25 Javascript
jQuery选择器特殊字符与属性空格问题
Aug 14 jQuery
微信小程序实现根据字母选择城市功能
Aug 16 Javascript
create-react-app修改为多页面支持的方法
May 17 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
在vue中使用console.log无效的解决
Aug 09 Javascript
使用PDF.js渲染canvas实现预览pdf的效果示例
Apr 17 Javascript
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
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
Laravel 5.3 学习笔记之 配置
2016/08/28 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
js中的前绑定和后绑定详解
2013/08/01 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
Python 创建空的list,以及append用法讲解
2018/05/04 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
python 修改本地网络配置的方法
2019/08/14 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
python 实现简易的记事本
2020/11/30 Python
医学生职业规划范文
2014/01/05 职场文书
爱心捐助倡议书
2014/05/19 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书