一、目标
- XML和JSON
- Java反射机制
- 手写SpringIOC
二、什么是数据交换格式
客户端与服务器常用数据交换格式xml、json、html
三、数据交换格式用场景
移动端(安卓、IOS)通讯方式采用http协议+JSON格式 走restful风格。
很多互联网项目都采用Http协议+JSON
因为xml比较重WebService服务采用http+xml格式 银行项目使用比较多
移动端和PC端服务器接口设计
四、数据交换格式
4.1 JSON简单实用
4.1.1 什么是JSON
JSON( Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以客户端和服务器的数据交换格式往往通过JSON来进行交换。
{ "sites": [ { "name": "test", "url": "www.test.com" }, { "name": "test01", "url": "http://test01.com/" } ] }
JSON:JavaScript 对象表示法(JavaScript Object Notation)
JSON的形式是用大括号“{}”包围起来的项目列表,每一个项目间用逗号(,)分隔,而项目就是用冒号(:)分隔的属性名和属性值。这是典型的字典表示形式,也再次表明javascript里的对象就是字典结构。不管多么复杂的对象,都可以用一句JSON代码来创建并赋值。在JSON中,名称 / 值对包括字段名称(在双引号中),后面写一个冒号,然后是值
4.1.2 JSON格式的分类
JSON有两种结构
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,“javascript”,“vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。 经过对象、数组2种结构就可以组合成复杂的数据结构了。
4.1.3 常用JSON解析框架
- fastjson(阿里)
- gson(谷歌)
- jackson(SpringMVC自带)
4.1.4 使用fastjson解析json
4.1.4 .1 导入依赖
<dependency> <!--fastjson-1.1.43依赖--> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.43</version> </dependency>
4.1.4.2 使用fastjson API
//把JSON文本parse为JSONObject或者JSONArray public static final Object parse(String text); //把JSON文本parse成JSONObject public static final JSONObject parseObject(String text); //把JSON文本parse为JavaBean public static final <T> T parseObject(String text, Class<T> clazz); //把JSON文本parse成JSONArray public static final JSONArray parseArray(String text); //把JSON文本parse成JavaBean集合 public static final <T> List<T> parseArray(String text, Class<T> clazz); //将JavaBean序列化为JSON文本 public static final String toJSONString(Object object); //将JavaBean序列化为带格式的JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); //将JavaBean转换为JSONObject或者JSONArray。 public static final Object toJSON(Object javaObject);
4.1.4.3 解析json
public class jsondemo01 { static String JSONSTR = "{"sites":[{"name":"蚂蚁课堂","url":"www.itmayiedu.com"},{"name":"每特教育","url":"http://meiteedu.com/"}]}"; public static void main(String[] args) { // 将json字符串转为jsonbject JSONObject jsonObject = JSONObject.parseObject(JSONSTR); JSONArray sites = jsonObject.getJSONArray("sites"); for (Object object: sites) { JSONObject stObject = (JSONObject) object; String name = stObject.getString("name"); String url = stObject.getString("url"); System.out.println(name+"-----------------"+url); } } }
4.1.4.4 组装json
public class JosnDemo02 { // static String JSONSTR = "{"sites":[{"name":"蚂蚁课堂","url":"www.itmayiedu.com"},{"name":"每特教育","url":"http://meiteedu.com/"}]}"; public static void main(String[] args) { //创建JSON对象 JSONObject jsonObject = new JSONObject(); //创建JSON数组 JSONArray objects = new JSONArray(); //创建数组内部对象 JSONObject bean1 = new JSONObject(); bean1.put("name","蚂蚁课堂"); bean1.put("url","www.itmayiedu.com"); JSONObject bean2 = new JSONObject(); bean2.put("name","每特教育"); bean2.put("url","http://meiteedu.com"); objects.add(bean1); objects.add(bean2); jsonObject.put("sites",objects); System.out.println(jsonObject); }
4.2 XML简单使用
4.2.1 什么是XML?
它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。
XML 全称为可扩展的标记语言。主要用于描述数据和用作配置文件。
XML 文档在逻辑上主要由一下 5 个部分组成:
- XML 声明:指明所用 XML 的版本、文档的编码、文档的独立性信息
- 文档类型声明:指出 XML 文档所用的 DTD
- 元素:由开始标签、元素内容和结束标签构成
- 注释:以结束,用于对文档中的内容起一个说明作用
- 处理指令:通过处理指令来通知其他应用程序来处理非 XML 格式的数据,格式为XML 文档的根元素被称为文档元素,它和在其外部出现的
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/292344.html