Spring之数据交换格式与SpringIOC底层实现


一、目标

  1. XML和JSON
  2. Java反射机制
  3. 手写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解析框架

  1. fastjson(阿里)
  2. gson(谷歌)
  3. 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 个部分组成:

  1. XML 声明:指明所用 XML 的版本、文档的编码、文档的独立性信息
  2. 文档类型声明:指出 XML 文档所用的 DTD
  3. 元素:由开始标签、元素内容和结束标签构成
  4. 注释:以结束,用于对文档中的内容起一个说明作用
  5. 处理指令:通过处理指令来通知其他应用程序来处理非 XML 格式的数据,格式为XML 文档的根元素被称为文档元素,它和在其外部出现的

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/292344.html

(0)
上一篇 2022年10月31日
下一篇 2022年10月31日

相关推荐

发表回复

登录后才能评论