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 相关文章推荐
js面向对象编程之如何实现方法重载
Jul 02 Javascript
判断window.onload是否多次使用的方法
Sep 21 Javascript
jquery代码实现多选、不同分享功能
Jul 31 Javascript
javascript实现获取图片大小及图片等比缩放的方法
Nov 24 Javascript
基于jQuery制作小图标上下滑动特效
Jan 18 Javascript
Vue获取DOM元素样式和样式更改示例
Mar 07 Javascript
JavaScript无缝滚动效果的实例代码
Mar 27 Javascript
详解ES6语法之可迭代协议和迭代器协议
Jan 13 Javascript
vue2.0 资源文件assets和static的区别详解
Apr 08 Javascript
通过说明与示例了解js五种设计模式
Jun 17 Javascript
vue路由传参的基本实现方式小结【三种方式】
Feb 05 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
Jul 15 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
zend framework多模块多布局配置
2011/02/26 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
vue3.0实现插件封装
2020/12/14 Vue.js
python和C语言混合编程实例
2014/06/04 Python
Python中扩展包的安装方法详解
2017/06/14 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
Python3直接爬取图片URL并保存示例
2019/12/18 Python
python实现简单俄罗斯方块
2020/03/13 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
将一个文本文件的内容按倒序打印出来
2015/01/05 面试题
七一表彰活动方案
2014/01/18 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
文艺晚会主持词
2014/03/24 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
奖励通知
2015/04/22 职场文书
可怜妈妈观后感
2015/06/09 职场文书
公司仓库管理制度
2015/08/04 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js
MySQL慢查询优化解决问题
2022/03/17 MySQL