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 ready函数源代码研究
Dec 06 Javascript
JS声明变量背后的编译原理剖析
Dec 28 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
Jun 30 Javascript
jQuery知识点整理
Jan 30 Javascript
JS网页在线获取鼠标坐标值的方法
Feb 28 Javascript
JS设置网页图片vspace和hspace属性的方法
Apr 01 Javascript
jQuery插件kinMaxShow扩展效果用法实例
May 04 Javascript
javascript排序函数实现数字排序
Jun 26 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
Dec 09 Javascript
详解AngularJS实现表单验证
Dec 10 Javascript
ES10 特性的完整指南小结
Mar 04 Javascript
koa大型web项目中使用路由装饰器的方法示例
Apr 02 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来改写404错误页让你的页面更友好
2013/01/24 PHP
PHP循环结构实例讲解
2014/02/10 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
jQuery动态改变多行文本框高度的方法
2016/09/07 Javascript
JavaScript两个变量交换值的实现方法
2017/03/01 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
Python实现读写INI配置文件的方法示例
2018/06/09 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
详解Python设计模式之策略模式
2020/06/15 Python
python如何处理程序无法打开
2020/06/16 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
应用电子技术专业个人求职信
2013/09/21 职场文书
毕业生个人自荐书
2015/03/05 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
JavaScript设计模式之原型模式详情
2022/06/21 Javascript