大家好,這裡是懶得用字串串接的小編過路君子
本來是用字串慢慢串,後來想想,如果未來 Json 變龐大就會變得很麻煩
光是要將 String 型態的變數變成 Json,就要在開頭和結尾添加雙引號("),然後還要跳脫(\")。
如果數量小當然是無所謂,但是當數量一多、層次變複雜,便要人命了起來。
所以今天要來介紹一個可以快速產生 Json 格式的套件,這邊小編就先放出相關的 dependency 資訊:
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20230227</version>
</dependency>
那小編最主要參考的範例來自官方所提供的範例程式碼,如果各位有興趣可以點擊左方的連結直接前往查看。
除了小編等等會介紹到的 Json 格式產生,裡面還有提到如何產生 xml、http header 或者是 Json 解析的用法,有需要的人直接飄過去~
產生 Json 格式
key 的資料型態沒得選,只能是 java.lang.String。
而 value 的值除了下方程式碼中看到的 String、int 或是 boolean 之外,Boxing 過的變數型態也支援,例如:Integer 或是 Boolean 之類的。
當然 float 和 double 也支援,直接塞在 key 後面就可以了。
import org.json.JSONObject;
public class json
{
public static void main(String[] args)
{
JSONObject result = new JSONObject();
result.put("key", "value");
result.put("key2", 5);
result.put("key3", true);
System.out.println(result.toString());
}
}
執行以上的程式,我們可以得到以下的結果:
{
"key2": 5,
"key3": true,
"key": "value"
}
其中 key 顯示的順序沒法調整,也沒有必要調整。
添加陣列資料
我們也常常需要添加陣列進到我們的 Json 內,所以接下來我們來使用來自同一包內的 JSONArray 來添加陣列資料進到我們的 Json 內。
import org.json.JSONArray;
import org.json.JSONObject;
public class json
{
public static void main(String[] args)
{
JSONObject result = new JSONObject();
result.put("key", "value");
JSONArray array = new JSONArray();
array.put("sub");
array.put(100);
array.put(false);
result.put("key2", array);
System.out.println(result.toString());
}
}
執行以上的程式碼,我們可以得到以下的結果:
{
"key2": [
"sub",
100,
false
],
"key": "value"
}
產生多層次的Json
那如果我們要在陣列裡面再放入物件那也非常簡單,直接將 JSONObject 塞入 JSONArray 就對了。
import org.json.JSONArray;
import org.json.JSONObject;
public class json
{
public static void main(String[] args)
{
JSONObject result = new JSONObject();
result.put("key", "value");
JSONObject sub1 = new JSONObject();
sub1.put("name", "Bob");
sub1.put("age", 18);
JSONObject sub2 = new JSONObject();
sub2.put("name", "Alex");
sub2.put("age", 27);
JSONArray array = new JSONArray();
array.put(sub1);
array.put(sub2);
result.put("key2", array);
System.out.println(result.toString());
}
}
這樣我們就可以得到以下的 Json:
{
"key2": [
{
"name": "Bob",
"age": 18
},
{
"name": "Alex",
"age": 27
}
],
"key": "value"
}
可以發現我們的 key2 所對應的就是一個陣列了。
那如果要讓 key2 所對應的變成物件,那也很簡單,不用先塞進 JSONArray 內,直接塞進 JSONObject 就對了。
後記
因為小編只需要產生 Json,不需要去解析任何的 Json,所以這個套件對於小編來說非常方便。
至少比起用字串在那邊串接到快眼花還要好,當然,這個套件當然也有解析 Json 的功能,有興趣的可以前往官方的範例程式碼查看。
順帶一提,小編是拿來作為 rest server 的一部分,不得不說,Firefox 對於 Json 格式的渲染真的很好看,還要特別去更改 header,要不然瀏覽器認不得這個 Json,使用上沒有差別,但是就是用起來比較高興。

