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 相关文章推荐
基于jQuery实现点击同时更改两个iframe的网址
Jul 01 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
Oct 12 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
Dec 29 Javascript
js鼠标及对象坐标控制属性详细解析
Dec 14 Javascript
js 实现一些跨浏览器的事件方法详解及实例
Oct 27 Javascript
Vue实现动态显示textarea剩余字数
May 22 Javascript
Array数组对象中的forEach、map、filter及reduce详析
Aug 02 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
Sep 15 Javascript
JavaScript HTML DOM元素 节点操作汇总
Jul 29 Javascript
layui 数据表格复选框实现单选功能的例子
Sep 19 Javascript
Node 模块原理与用法详解
May 13 Javascript
jQuery实现图片切换效果
Oct 19 jQuery
在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
从康盛产品(discuz)提取出来的模板类
2011/06/28 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
PHP实现事件机制的方法
2015/07/10 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
2017/05/04 PHP
php基于session锁防止阻塞请求的方法分析
2017/08/07 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
Js数组扁平化实现方法代码总汇
2020/11/11 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
python re模块的高级用法详解
2018/06/06 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
python实现拼图小游戏
2020/02/22 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
美国批发供应商:Kole Imports
2019/04/10 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
平面设计专业求职信
2014/08/09 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
我的长征观后感
2015/06/09 职场文书
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript