JSON的基本结构和数据交换原理
0、补充的写在前面的话
- JSON是一种数据结构,你可以理解为编写内容的规范和要求,它不是一种特殊的文件,所以不会有什么 .java 或者 .class 之类的后缀
- JSON用于不同“平台”间传递信息,如前端读不懂Java数据,后端不明白JS数据,所以通过规范的内容体也就是JSON来传递信息
- 信息在不同的两方传递,大家各自都有解析JSON的方法,能够读懂上面的信息,就达到了交流的目的
0、题外话:Jason Voorhees?

1、JSON介绍
JSON(JavaScript Object Notation),类似于XML,是一种数据交换格式,相比之下,它比XML表达起来更简单。虽然它源自于JavaScript,但是只是一种数据格式,可以用于任何编程语言。
2、JSON的数据结构
- null: 表示为 null
- boolean: 表示为 true 或 false
- number: 一般的浮点数表示方式
- string: 表示为 "..."
- array: 表示为 [ ... ]
- object: 表示为 { ... }
2.1 array


2.2 object

{
"orderID": 12345,
"shopperName": "John Smith",
"shopperEmail": "johnsmith@example.com",
"contents": [
{
"productID": 34,
"productName": "SuperWidget",
"quantity": 1
},
{
"productID": 56,
"productName": "WonderWidget",
"quantity": 3
}
],
"orderCompleted": true
}
{
"orderID": 12345,
"shopperName": "John Smith",
"shopperEmail": "johnsmith@example.com",
"contents": [
{
"productID": 34,
"productName": "SuperWidget",
"quantity": 1
},
{
"productID": 56,
"productName": "WonderWidget",
"quantity": 3
}
],
"orderCompleted": true
}
3、JSON与XML的互相比较
3.1 简单的XML
<person>
<name>xiaoMing</name>
<age>20</age>
</person>
<person>
<name>xiaoMing</name>
<age>20</age>
</person>
{
"name":"xiaoMing",
"age":20
}
{
"name":"xiaoMing",
"age":20
}
3.2 复杂的XML
<section>
<title>BOOK</title>
<signing>
<author name="author-1"/>
<book title="book1" price="$11"/>
</signing>
<signing>
<author name="author-2"/>
<book title="book2" price="$22"/>
</signing>
</section>
<section>
<title>BOOK</title>
<signing>
<author name="author-1"/>
<book title="book1" price="$11"/>
</signing>
<signing>
<author name="author-2"/>
<book title="book2" price="$22"/>
</signing>
</section>
"section":{
"title":"BOOK",
"signing":[
{
"author":
{
"name":"author-1"
},
"book":
{
"title":"book1",
"price":"$11"
}
},
{
"author":
{
"name":"author-2"
},
"book":
{
"title":"book2",
"price":"$22"
}
}]
}
"section":{
"title":"BOOK",
"signing":[
{
"author":
{
"name":"author-1"
},
"book":
{
"title":"book1",
"price":"$11"
}
},
{
"author":
{
"name":"author-2"
},
"book":
{
"title":"book2",
"price":"$22"
}
}]
}
3.3 JSON和XML的优缺点
3.3.1 XML的优缺点
3.3.2 JSON的优缺点
4、使用JSON实现数据交换
4.1 数据交换原理
- 如果是客户端请求数据,那么服务器端就将Java对象先转换成 JSON字符串;
- 经响应把字符串传到客户端之后,客户端就会接收到这个转换结果;
- 但JavaScript要求把这个字符串变成对象格式才更方便访问;
- 所以在客户端的JavaScript代码中又需要将这个JSON字符串变成JavaScript能够识别的对象;
- 这样就完成了从服务器端的对象到客户端对象的 整个转变过程。
4.2 Java对象转换为JSON
Employee emp = new Employee(1,“王小贱”,“男”);
JSONObject obj = JSONObject.fromObject(emp);
String jsonStr = obj.toString();
Employee emp = new Employee(1,“王小贱”,“男”);
JSONObject obj = JSONObject.fromObject(emp);
String jsonStr = obj.toString();
List<Employee> emps = new ArrayList< Employee >();
for(int i=0;i<3;i++){
Employee s = new Employee ();
s.setId(i+1);
s.setName("Bear" + i);
s.setGender(“男”);
emps.add(s);
}
JSONArray jsonArr = JSONArray.fromObject(emps);
String jsonStr = jsonArr.toString();
List<Employee> emps = new ArrayList< Employee >();
for(int i=0;i<3;i++){
Employee s = new Employee ();
s.setId(i+1);
s.setName("Bear" + i);
s.setGender(“男”);
emps.add(s);
}
JSONArray jsonArr = JSONArray.fromObject(emps);
String jsonStr = jsonArr.toString();
4.3 JSON字符串转换成JS对象
var jsonObj = eval(“(“ + json + “)”);
var jsonObj = eval(“(“ + json + “)”);
<script type="text/javascript" src="js/prototype-1.6.0.3.js"></script>
<script type="text/javascript">
function f1(){
var xhr = getXhr();
xhr.open('get','quoto.do',true);
xhr.onreadystatechange=function(){
if(xhr.readyState == 4){
var txt = xhr.responseText;
//将json字符串转换成javascript对象或者数组
var arr = txt.evalJSON();
}
};
xhr.send(null);
}
</script>
<script type="text/javascript" src="js/prototype-1.6.0.3.js"></script>
<script type="text/javascript">
function f1(){
var xhr = getXhr();
xhr.open('get','quoto.do',true);
xhr.onreadystatechange=function(){
if(xhr.readyState == 4){
var txt = xhr.responseText;
//将json字符串转换成javascript对象或者数组
var arr = txt.evalJSON();
}
};
xhr.send(null);
}
</script>
附件列表
JSON的基本结构和数据交换原理的更多相关文章
- JSON --- 一种轻量级的数据交换格式
目录 1. 语法 2. 解析与序列化 JSON.stringify( jsData[, filter, indent] ) JSON.parse( jsonData[, reduction]) JSO ...
- JSON、使用JSON进行数据交换的基础和原理
1. JSON 1.1. JSON 1.1.1. 什么是JSON JSON即Javascript对象表示法,是一种现在主流的数据交换格式.之所以应用广泛还是由其简单易读所决定的. 简单,只有六种类型的 ...
- 常用两种数据交换格式之XML和JSON的比较
目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生: 相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你 ...
- XML和JSON两种数据交换格式的比较
在web开发领域,主要的数据交换格式有XML和JSON,对于在 Ajax开发中,是选择XML还是JSON,一直存在着争议,个人还是比较倾向于JSON的.一般都输出Json不输出xml,原因就是因为 x ...
- iOS 中 JSON 数据交换格式
JSON (JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 的详细教程,能够參见 JSON 中国:http://www.json.org.cn/ ...
- 数据交换格式XML和JSON对比
1.简介: XML:extensible markup language,一种类似于HTML的语言,他没有预先定义的标签,使用DTD(document type definition)文档类型定义来组 ...
- 【学习】006数据交换格式与SpringIOC底层实现
课程目标 XML和JSON Java反射机制 手写SpringIOC 什么是数据交换格式 客户端与服务器常用数据交换格式xml.json.html 数据交换格式用场景 移动端(安卓.IOS)通讯方式采 ...
- MySQL 5.7:非结构化数据存储的新选择
本文转载自:http://www.innomysql.net/article/23959.html (只作转载, 不代表本站和博主同意文中观点或证实文中信息) 工作10余年,没有一个版本能像MySQL ...
- Solr系列四:Solr(solrj 、索引API 、 结构化数据导入)
一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <gro ...
随机推荐
- 如何统计iOS产品不同渠道的下载量?
一.前言 在开发过程中,Android可能会打出来很多的包,用于标识不同的商店下载量.原来觉得苹果只有一个商店:AppStore,如何做出不同来源的统计呢?本篇文章就是告诉大家如何做不同渠道来源统计. ...
- RabbitMQ --- Routing(路由)
目录 RabbitMQ --- Hello Mr.Tua RabbitMQ --- Work Queues(工作队列) RabbitMQ --- Publish/Subscribe(发布/订阅) 前言 ...
- WebService核心文件【web-config.wsdd】调用操作
WebService核心文件[server-config.wsdd]详解及调用示例 作者:玛莎拉蒂-小贱人 一.准备工作 导入需要的jar包: 二.配置web.xml 在web工程的web.xml中添 ...
- node.js之事件机制
EventEmitter类 方法名与参数 描述 参数说明 addListener(event,listener) 对指定的事件绑定事件处理函数 参数一是事件名称,参数二是事件处理函数 on(event ...
- 在Linux下安装eclipse
在Linux下安装eclipse 今天上午终于在Linux下把eclipse安装上去了,前几天尝试了一次,失败了,不知道是软件版本的问题还是我自己的原因,估计还是我自己的原因占多数!下面把这次成功的经 ...
- 8.23.1 IO-输入输出流概念
输入输出流概念: 字节流相关的UML继承结构图: 字符流相关的UML继承结构图:
- maven 搭新建成之后 无法创建 src/main/java 目录解决
maven项目创建后 创建 src/main/java 和 src/main/test 会报错,目录已存在 打开build path 界面 src/main/java 和 ...
- 【JSP】JSP Action动作标签
Action动作标签简述 JSP action是JSP技术体系内置的一组标签,使用无需导入,或者添加另外的库.JSP action标签都是对Java代码的逻辑的封装.主要使用的是下面这些. 标签 作用 ...
- 关于jsp页面转换成excel格式下载遇到问题及解决
jsp页面转成excel格式的实现思路: 1.使用poi包:poi-bin-3.9-20121203 下载连接地址:http://www.apache.org/dyn/closer.cgi/poi/r ...
- macaca 测试web(3)
上回书说到 macaca 测试web(2) 使用ddt做参数驱动化, 有些人会说,你好low,我说怎么low呢,他说你看看你的脚本就放在一个文件里,对于我们小白来说,这看起来很乱啊,能不能给我拆分, ...
