ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-10-31 12:46:02  阅读:400  来源: 互联网

标签:javaJDK java 虚拟机 布局 数据 代码 程序 面试 题目


一、目标

  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 文档的根元素被称为文档元素,它和在其外部出现的

标签:javaJDK,java,虚拟机,布局,数据,代码,程序,面试,题目
来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有