JSON 使用总结

JSON 使用总结

​ JSON :JavaScript Object Notation (JavaScript 对象表示法),JSON 语法是 JavaScript 语法的子集,但是 JSON 独立于语言和平台。

​ JSON 是轻量级的文本数据交换格式,格式简单,层级清晰,可读性强,可被 JS 直接解析,数据可使用 AJAX 传输,便于前后端交互

JSON 语法格式:

​ JSON 的数据包括数字、字符串、数组、对象,数字不需要符号包裹,字符串用 "" 双引号包裹,数组用 [] 方括号包裹,对象用 {} 花括号包裹(JSON 中所有符号均为英文)

​ 数据使用键/值对表示:键,必须是字符串,且同一个对象中的键不能重复;值可以是数字、字符串、数组、对象,可重复;键和值之间 用 : 冒号分隔

​ 数据由 , 逗号分隔,即同一级的数据由逗号分隔

JSON 与 Java 互转

Java 中的对象可解析成 JSON 格式,同样 JSON 格式也可以解析成 Java 对象。

Java 与 JSON 互转的方法比较简单,网上也很容易找到,本文不做赘述,本文也不做原理上的分析,想学习原理可参考Json字符串和java对象之间的相互转换(原理篇)

本文主要做使用过程中经验上的总结

  1. 一般 JSON 中的对象(花括号包裹的部分)会转化成 Java 中的 Map<String,Object> 容器,即 JSON 对象中的键对应 Map 中的 K,K是字符串类型的, JSON 对象中的值对应 Map 中的 V,V 可以是数字、字符串、对象或集合类型(包括数组)

  2. JSON 中的数组(方括号包裹的部分)会转化成 Java 中的集合类型(包括数组),即 JSON 数组中的一条数据对应 Java 集合中的一个元素,因此 Java 集合的元素类型要包含 JSON 数组的数据类型。

    例1:有一个 JSON 数组如下
    
    ​	[1,2,3,4,5]
    
    ​	转成 Java 集合,可使用 List<Integer>
    
    例2:有一个 JSON 数组如下
    
    ​	[1,"a",{"b":"c"}]
    
    ​	转成 Java 集合,可使用 List<Object> ,集合中的元素类型只能为 Object
    
  3. Java 转 JSON 时,Java 中的 Class 会转化成 JSON 中的对象,集合类型(包括数组)会转化成 JSON 中的数组,Map<K,V> 容器会转化成 JSON 中的对象,其中 K 如果不是字符串类型则会被强制转成字符串类型。

    例:

    public static void main(String[] args) {
    		Map<String,Object> map1 = new HashMap<>();
    		Map<Map<String,Object>,String> map2 = new HashMap<>();
    		map1.put("a", 1);
    		map2.put(map1, "abc");
    		String json1 = JsonKit.toJson(map1);
    		String json2 = JsonKit.toJson(map2);
    		System.out.println(json1);
    		System.out.println(json2);
    }
    输出结果如下:
        {"a":1}
    	{"{a=1}":"abc"}
    以上代码可见,map2 中的 K 不是 String 类型,转为 JSON 格式后被强转成了 String 类型。
    
  4. Java 中的数据有的是有序有的是不定序的,转成 JSON 格式后,顺序则会固定下来,即 JSON 中的数据是有顺序的。

  5. *此处注意一点,有的浏览器在显示 JSON 格式数据时会自动排序,这样会造成显示顺序与 JSON 数据实际顺序不一样。但 JS 读取 JSON 数据时与其他数据交互时依然是 JSON 数据原本的顺序。即即使发现浏览器显示顺序与 JSON 数据顺序不符,但不影响数据交互。

    经百度,Chrome 显示 JSON 时会自动排序,FireFox 显示 JSON 时按数据本身的顺序。

JSON文件

​ JSON 格式的文件以 .json 为后缀, .json 文件可使用记事本、浏览器、文件编辑器( notepad )打开,可以使用 .json、 .txt 文件作为 JSON 数据的载体进行读取和传输。但 .json 文件中的内容并不一定是标准的 JSON 格式数据,因此不建议使用 .json 文件进行 JSON 数据的交互。

posted @ 2021-03-26 14:41  来一杯coffee  阅读(115)  评论(0)    收藏  举报