简介

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

JSON 语法规则

  JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。JSON是一个序列化的对象或数组。

  对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成,如:

一本书
书名
简介
java
   class Book{
     private String name;
     private String info;
get/set...
   }
   Book b = new Book();
   b.setName(“金苹果”);
   b.setInfo(“种苹果”);
   ...
js:
   var b = new Object();
   b.name = "金苹果";
   b.info = "种苹果";
   
 XML:
   <book>
     <name>金苹果</name>
     <info>种苹果</info>
   </book>
 JSON:
   {
     "name":"金苹果",
     "info":"种苹果"
   }
  一个对象, 由一个大括号表示.
   括号中 描述对象的属性 . 通过键值对来描述对象的属性
   (可以理解为, 大括号中, 包含的是一个个的键值对.)
   格式:
    键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
    键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解
析.)
    键值对的值, 可以是JS中的任意类型的数据

  数组格式,是由方括号括起来的一组值构成,数组值必须是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)如:

[3, 1, 4, 1, 5, 9, 2, 6]
[元素1,元素2...]

  值(value)可以是双引号括起来的字符串(string)、数值(number)、truefalse、 null、对象(object)或者数组(array)。这些结构可以嵌套。

   {
        "name":"高宇童鞋",
        "age":18,
        "pengyou":["张三","李四","王二","麻子",{
              "name":"野马老师",
              "info":"像匹野马一样狂奔在技术钻研的道路上"
           }],
        "heihei":{
          "name":"大长刀",
          "length":"40m"
       }
     }

 Java与JSON

做什么?
  将Java中的对象 快速的转换为 JSON格式的字符串.
  将JSON格式的字符串, 转换为Java的对象.

Gson解析

  Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。而JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,广泛应用于各种数据的交互中,尤其是服务器与客户端的交互。
将对象转换为JSON字符串

转换JSON字符串的步骤:
    1.  引入JAR包(gson-2.8.6.jar)
    2.  在需要转换JSON字符串的位置编写如下代码即可:
      String json = new Gson().toJSON(要转换的对象);

import com.google.gson.Gson;


public class Demo1 {

    public static void main(String[] args) {
        /*//1.    创建Gson对象
        Gson g = new Gson();
        //2.    转换
        Book b = new Book("100","金苹果","种植苹果真辛苦");
        String s = g.toJson(b);
        System.out.println(s);*/

        //1.    创建Gson对象
        //2.    转换
        Book b = new Book("100","金苹果","种植苹果真辛苦");
        String s = new Gson().toJson(b);
        System.out.println(s);
    }
}
将JSON字符串转换为对象

  1.  引入JAR包(gson-2.8.6.jar)
  2.  在需要转换Java对象的位置, 编写如下代码:
      对象 = new Gson().fromJson(JSON字符串,对象类型.class);

public class Demo3 {

    public static void main(String[] args) {
        //1.    创建Gson对象
        Gson g = new Gson();
        //2.    转换  :  {"id":"100","name":"金苹果","info":"种植苹果真辛苦","page":["锄禾日当午","汗滴禾下土","嘿嘿嘿嘿嘿"]}
        HashMap data = g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"嘿嘿嘿嘿嘿\"]}", HashMap.class);
        List page = (List) data.get("page");
        System.out.println(page.get(1));
    }
}

FastJson解析

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。

将对象转换为JSON字符串

转换JSON字符串的步骤:
    1.  引入JAR包(fastjson-1.2.70.jar)
    2.  在需要转换JSON字符串的位置编写如下代码即可:
      String json=JSON.toJSONString(要转换的对象);

import com.alibaba.fastjson.JSON;

public class Demo4 {
    public static void main(String[] args) {
        
        Book book = new Book("1002","唐诗三百首","床前明月光,地上鞋一堆。床上我杰哥,喊十块钱一双。");
        //1.    转换
        String json = JSON.toJSONString(book);
        System.out.println(json);
    }
}
将JSON字符串转换为对象

  1.  引入JAR包(fastjson-1.2.70.jar)
  2.  在需要转换Java对象的位置, 编写如下代码:
    类型 对象名=JSON.parseObject(JSON字符串, 类型.class);

      List<类型> list=JSON.parseArray(JSON字符串,类型.class);

public class Demo5 {
    public static void main(String[] args) {
        
        //1.    转换  : {"id":"1002","info":"床前明月光,地上鞋一堆。床上我杰哥,喊十块钱一双。","name":"唐诗三百首"}
        Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"床前明月光,地上鞋一堆。床上我杰哥,喊十块钱一双。\",\"name\":\"唐诗三百首\"}", Book.class);
        System.out.println(book.getId());

    }
}
public class Demo6 {
    public static void main(String[] args) {
        
        //1.    转换  : ["一二三","二三四","三四五"]
        List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class);
        System.out.println(strings.get(1));

    }
}

end~