[精讚] [會員登入]
1843

【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

你可能感興趣的文章

【Wickct】(縮短網址) 如何將網頁掛載到特定路徑下 Wildfly的預設網址又臭又長又不好記,而且會被看到後端的目錄路徑安排,當然能藏就盡量藏起來啦

【C++】一些好用的C++小功能 —— 壹 不太重要,但是可以增加程式質量以及可以讓程式看起來好像很厲害

【CoreProtect】[SpigotMC] (進階篇) 如何直接存取資料 大家好,這裡是準備要去參加FF38的小編過路君子 本來只要自己去,結果臨時有人說要一起去,那...好吧!走~ 對於一般人

【教程】(進階版)如何用Sigil製作一本高質量的epub 下載好了Sigil之後除了直接把文字貼進去以外,還有:變更字型、著色、導入CSS……等等功能,不知道你有沒有發現呢?

【Docker hub】[Linux]以IPv6來pull容器(container)吧! 在一個 IPv6 還不盛行的年代,做事情總是特別麻煩

【C++】使用SFML創建新視窗和新增圖標(ICON)並隱藏DOS 筆記,怕自己以後忘記怎麼創建並開啓一個新視窗

隨機好文

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

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

【分享、整合串】什麼?!高捷少女竟然有二創小說!! 由時零宇宙大大在巴哈上面連載的二創高捷少女小說,就讓我們來看看,究竟在時零大大的巧手下,高捷少女們會擦出什麼樣的火花吧!

高捷少女:地下城的探險少女③ 過了十分鐘後,前方的天花板滴下一滴水珠,發出「噠」一聲響亮地落在石地上,讓大家嚇一跳。     「什麼嘛,只是水珠而已。」艾米撫著胸口噓了一聲。     忽然間,耐耐的臉色發白起來。「各位,你們看

高捷少女:耐耐的新年驚喜① 耐耐拿出手機。「我回來囉。」她說。幾分鐘後,木門緩緩打開。當它完全開啟的那一刻,小穹手中的包包掉到地上;艾米揉揉雙眼,確定自己看見的景象;婕兒的三魂七魄飛到了九霄雲外。