[精讚] [會員登入]
1711

【JSON In Java】如何快速產生JSON

身為三十年老程式語言,當然對Json有不錯的支援,那究竟該如何使用呢

分享此文連結 //n.sfs.tw/16158

分享連結 【JSON In Java】如何快速產生JSON@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2023-04-12 00:33:33 最後編修
2023-04-11 23:38:03 By 過路君子
 

大家好,這裡是懶得用字串串接的小編過路君子

本來是用字串慢慢串,後來想想,如果未來 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,使用上沒有差別,但是就是用起來比較高興。

END

你可能感興趣的文章

【Stable Diffusion web UI】[AI 作畫](Linux)無 NVIDIA 顯卡之伺服器運行測試 凡事就是要試試看,才知道最後的結果

【NodeMCU / ESP8266】[Arduino]測量溫溼度並上傳至ThinkSpeak 使用簡單的溫度計來測量溫濕度並上傳至第三方網站,這樣他人只要有瀏覽器就能看到我們的數據了

【Maven / Jython】建立可直接執行的JAR檔案 以小編的前一篇文章為基礎,加了一些新東西進去,就變成另一個樣貌了

【Wicket】[URI]使用Java取得目前網址 這是個還滿常用的功能,可惜 Wicket 沒有內建函式可以快速取得我們要的部分,只能依靠我們自己後期的字串剖析

【JDA/discord bot】如何獲得訊息中的圖片和影片並儲存或轉傳 如何將訊息中的圖片或影片之類的多媒體提取出來之後,再進行相關的處理

【Wickct】如何製作一個簡單的動態響應頁面和傳遞參數至其他頁面 身為一個後端架構程式,這個功能當然是非常重要之一

隨機好文

[活動] 2017年4/1雲空幻想愚人節活動彩蛋&攻略 (紀念性質) 雲空幻想2017年的愚人節活動介紹同時也是本小編的第一篇網路文章(*^ω^)♪

希萌創意預計在今年7月繼東津萌米之後再次推出新遊戲--食用性少女! 今天來介紹希萌創意的心企劃案,來讓大家知道這個消息!讓大家的錢包君一起來減肥吧!Ψ(☆w☆)

高捷少女:美麗島的守護者② 這是在亦晨離開前的下午拍的,當時亦晨在美麗島跟小穹艾米等人在美麗島散步,為離開前補充一些回憶,這時剛好經過的小雅被艾米抓過來,做為同樣是高捷新人的她倆一同拍了一張紀念照。說起來她跟亦晨並不太熟,不過也

婕兒──她的青春① 「各位乘客,本列車即將抵達拉里奧哈自治區,並在此地停留三天兩夜,後天的中午十二點將搭乘班機返回臺灣,感謝各位乘客對本次旅程的配合。」火車上的廣播器朗誦道。「時間過得真快呢,這次的歐洲之旅就這樣結束了,

【英翻中歌詞】(二創歌)東方妖妖夢-人形裁判 ~玩弄人偶的少女 人形裁判 ~ 人の形弄びし少女 很久很久以前,在一個神奇的異地,住著一位少女,十分惹人憐愛 她的皮膚就像陶瓷一樣潔白,眼睛就像藍色寶珠般明亮