JavaScript处理解析JSON数据过程详解


Posted in Javascript onSeptember 11, 2015

JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

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);  
  }

以上内容就是给大家介绍JavaScrip处理t解析JSON数据过程详解,希望对大家有所帮助。

Javascript 相关文章推荐
List Installed Hot Fixes
Jun 12 Javascript
javascript 事件绑定问题
Jan 01 Javascript
JS无限树状列表实现代码
Jan 11 Javascript
js String对象中常用方法小结(字符串操作)
Jan 27 Javascript
Javascript实现视频轮播在pc端与移动端均可
Sep 29 Javascript
JavaScript控制table某列不显示的方法
Mar 16 Javascript
详解Javascript模板引擎mustache.js
Jan 20 Javascript
使用jQuery判断浏览器滚动条位置的方法
May 30 Javascript
JS实现css hover操作的方法示例
Apr 07 Javascript
使用Vue动态生成form表单的实例代码
Apr 26 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
May 14 jQuery
React路由鉴权的实现方法
Sep 05 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
Sep 11 #Javascript
JavaScript实现算术平方根算法-代码超简单
Sep 11 #Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 #Javascript
jQuery超精致图片轮播幻灯片特效代码分享
Sep 10 #Javascript
手机端转盘抽奖代码分享
Sep 10 #Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
Sep 10 #Javascript
原生JS实现仿淘宝网左侧商品分类菜单效果代码
Sep 10 #Javascript
You might like
PHP文章按日期(月日)SQL归档语句
2012/11/29 PHP
ini_set的用法介绍
2014/01/07 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP实现简单实用的分页类代码
2016/04/08 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
php unlink()函数使用教程
2018/07/12 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
2013/09/03 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
Python实现堆排序的方法详解
2016/05/03 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
Python中标准模块importlib详解
2017/04/16 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
儿童编程python入门
2018/05/08 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python的argparse库使用详解
2018/10/09 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
django foreignkey(外键)的实现
2019/07/29 Python
matplotlib制作雷达图报错ValueError的实现
2021/01/05 Python
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
园艺师求职信
2014/04/27 职场文书
2014年学生资助工作总结
2014/12/18 职场文书
公司表扬信格式
2015/05/04 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis