[精讚] [會員登入]
694

【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

你可能感興趣的文章

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

【ThinkSpeak】一個IoT數據分析(IoT analytics)及呈現的網站 世界上有著各式各樣的需求,因而誕生出了各式各樣的網站,絕對不是沒有人提供,而是你不知道哪裡有這東西

【SeaChest & Synology】512e(Advanced Format / AF) 轉換至 4Kn 好不容易入手了一顆硬碟,但是卻無法使用,除了賣掉還有更好的方法嗎?

【Maven】如何開始撰寫 Minecraft PaperMC server插件 萬事起頭難,要開始寫一個插件最難的一步就是要怎麼開始寫

【C++】一些好用的C++小功能 —— 貳 承襲上一篇的C++小功能,筆記下來以免自己以後忘記了。

【C++】如何解決TLE,換句話說便是加速cin, cout的執行速度 [ZERO JUDGE](UVa) a159: 11743 - Credit Check 題目練習和副程式練習

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

【開箱】高捷少女collection總集篇1 由希萌創意寄來的大包裹!裡面究竟有什麼呢?小編就帶大家來看看!

高捷少女:購票大作戰(終) 完了。 這下真的完了! 艾米腦內所有的思考中樞,同時發出了淒厲的吶喊。完蛋啦!這下真的被揭穿了啦!! 「那……那是因為……」艾米結結巴巴的說:「因為……

高捷少女:美麗島的守護者⑥ 一陣貓叫傳到小雅耳中,原本要朝小雅撲過去的北風轉了個圈,從半空中落地,牠的表情宛如五雷轟頂。這聲音……難道是……

【阿瑞斯病毒】(影片示範)棘刺豬打法&打銀狐辛酸史 分享荊棘豬的打法,希望這一點點的經驗分享可以幫你節省大量的時間!

【中翻英歌詞】(二創歌)請注意萬年備用傘 LONG AGO… ONE DARK AND STORMY NIGHT… 很久以前... 在