JSON 数据解析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

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

}

下面在重点给大家介绍JS中json数据的处理:
1、 json数据结构(对象和数组)
json对象:​var obj = {"name":"xiao","age":12};
json数组:​​

var objArray = [{"name":"xiao","age":12},{"name":"xiao","age":12}];

2、 处理json数据,依赖文件有:jQuery.js

3、Note:数据传输过程中,json数据是以文本,即字符串格式形式存在;
JS语言操作的是JS对象;
所以json字符串与JS对象之间的转换是关键;

4、数据格式
Json字符串:var json_str = ‘{"name":"xiao","age":12}';
Josn对象:var obj = {"name":"xiao","age":12};
JS对象:Object {name: "xiao", age: 12}

5、类型转换
Json字符串——>JS对象,使用方法:

注明:json_str、obj代表的是在本文子标题4中的数据类型;

obj = JSON.parse(json_str);
obj = jQuery.parseJSON(json_str);
Note:传入畸形json字符串(例如:‘{name:"xiao",age:12}'),会抛出异常;
Json字符串格式,严格格式:‘{"name":"xiao","age":12}'
JS对象——>Json字符串:
json_str = JSON. stringify(obj);

NOTE:

1、eval()是JS原生函数,使用该形式:eval(‘('+‘{name:"xiao",age:12}'+')'),并不安全,无法保证类型转换为JS对象;

2、上面3中方法,都经过chrome浏览器测试,下面是测试结果截图;

Json字符串——>JS对象;

JS对象——>Json字符串:

JSON 数据解析的方法相关推荐

  1. Android JSON数据解析(GSON方式)

    要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...

  2. Rxjava、Retrofit返回json数据解析异常处理

    每个App都避免不了要进行网络请求,从最开始的用谷歌封装的volley到再到android-async-http再到OKHttpUtils再到现在的Retrofit和RxJava,从我自己用后的体验来 ...

  3. 29-30Python多线程、多线程、使用threading模块创建线程;JSON数据解析、编码为JSON类型转换对应表、Python类型转换对应表、json.dumps与json.loads

    29Python3多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些 ...

  4. Android学习笔记44:JSON数据解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...

  5. Android json数据解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  6. iOS进阶(XML、JSON数据解析)

    1.XML解析之DOM解析 需要用到libxml2.dylib框架 和GDataXMLNode工具 DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中.从而消耗很大的内存空间.DOM ...

  7. JSON 解析,一款高颜值的 JSON 数据解析查看工具

    JSON 解析 一款高颜值的 JSON 数据解析查看工具,无需网络加载,本地即可运行,支持Object和Array两种数据格式,可以方便查看JSON数据. Git 地址:https://github. ...

  8. dio java,Flutter基础(十一)网络请求(Dio)与JSON数据解析

    本文首发于微信公众号「后厂技术官」 前言 在Android开发中如果我们想要请求网络,可以使用HttpClent.HttpURLConnection,但在项目中一般都会使用OkHttp和Retrofi ...

  9. java数组里套数组_用JAVA进行Json数据解析(对象数组的相互嵌套)

    这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...

最新文章

  1. Google AI与Deepmind强强联合,加速神经网络稀疏化进程
  2. MVC高级编程-目录
  3. dpkg and apt
  4. Hadoop Shell命令
  5. Codeforces Round #325 (Div. 2) Laurenty and Shop 模拟
  6. LiveVideoStackCon深圳 - 洞察多媒体技术生态趋势与机会
  7. 《Python Cookbook 3rd》笔记(2.12):审查清理文本字符串
  8. Java设计模式学习总结(3)——创建型模式之抽象工厂模式
  9. java 指针 引用_C++中的指针和引用与Java中的引用区别
  10. macos catalina cdr下载_这个开源神器可快速帮你安装 MacOS 虚拟机
  11. cocos creator基础-(六)cc.Sprite使用
  12. Javascript特效:侧边广告
  13. 4G的小程序与5G的Chromium OS?
  14. C语言实现华氏温度转换为摄氏温度
  15. 如何用Python操作Excel自动化办公?一个案例教会你openpyxl——图表设计和透视表
  16. Pyecharts+高德地图实现3D地图效果
  17. 四川翌加科技有限公司:抖音直播间被封怎么解除
  18. nginx交叉编译流程
  19. Visual Studio TFS安装详解
  20. C++11、14、17避免错误

热门文章

  1. 《python爬虫120例》教程导航帖(2022.5.7更新)
  2. 参考 | 解决iPad向日葵远程Windows电脑无法使用蓝牙键盘上下左右tab键的问题
  3. 【Mysql】图解左、右、内与全连接
  4. Vue获取表格值和超链接
  5. 自考计算机及应用英语作文,历年自考英语作文范文【九年期末英语作文及范文】...
  6. [国产单片机]如何利用CX32L003的pwm调节灯光颜色?看完秒懂
  7. 【健康】能量系统与训练应用和心肺耐力与运动表现
  8. 产品发布会PPT模板
  9. 5-6通过information_schema拿下数据库案例演示
  10. (转)json数据解析异常而导致网络请求失败的解决办法(其一)