本章節咱們將爲你們介紹如何在 Java 語言中使用 JSON。git

類庫選擇

Java中並無內置JSON的解析,所以使用JSON須要藉助第三方類庫。github

下面是幾個經常使用的 JSON 解析類庫:編程

  • Gson: 谷歌開發的 JSON 庫,功能十分全面。
  • FastJson: 阿里巴巴開發的 JSON 庫,性能十分優秀。
  • Jackson: 社區十分活躍且更新速度很快。

如下教程基於 FastJson 講解。json

環境配置

在 Maven 構建的項目中,在 pom.xml 文件中加入如下依賴便可。數組

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>

編碼與解碼

編碼

從 Java 變量到 JSON 格式的編碼過程以下:ide

實例

public void testJson() { JSONObject object = new JSONObject(); //string object.put("string","string"); //int object.put("int",2); //boolean object.put("boolean",true); //array List<Integer> integers = Arrays.asList(1,2,3); object.put("list",integers); //null object.put("null",null); ​ System.out.println(object); }

在上例中,首先創建一個 JSON 對象,而後依次添加字符串、整數、布爾值以及數組,最後將其打印爲字符串。性能

輸出結果以下:google

{"boolean":true,"string":"string","list":[1,2,3],"int":2}

解碼

從 JSON 對象到 Java 變量的解碼過程以下:編碼

實例

public void testJson2() {JSONObject object = JSONObject .parseObject("{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2}"); //string String s = object.getString("string"); System.out.println(s); //int int i = object.getIntValue("int"); System.out.println(i); //boolean boolean b = object.getBooleanValue("boolean"); System.out.println(b); //list List<Integer> integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class); integers.forEach(System.out::println); //null System.out.println(object.getString("null")); ​ }

在上例中,首先從 JSON 格式的字符串中構造一個 JSON 對象,以後依次讀取字符串、整數、布爾值以及數組,最後分別打印,打印結果以下:spa

string 2 true 1 2 3 null

JSON 對象與字符串的相互轉化

方法 做用
JSON.parseObject() 從字符串解析 JSON 對象
JSON.parseArray() 從字符串解析 JSON 數組
JSON.toJSONString(obj/array) 將 JSON 對象或 JSON 數組轉化爲字符串

實例

//從字符串解析JSON對象 JSONObject obj = JSON.parseObject("{\"runoob\":\"菜鳥教程\"}"); //從字符串解析JSON數組 JSONArray arr = JSON.parseArray("[\"菜鳥教程\",\"RUNOOB\"]\n"); //將JSON對象轉化爲字符串 String objStr = JSON.toJSONString(obj); //將JSON數組轉化爲字符串 String arrStr = JSON.toJSONString(arr);