最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)生成JSON字符串的三種方式分享

 更新時(shí)間:2023年05月07日 14:12:49   作者:張二三  
這篇文章主要來(lái)和大家分享一下Java實(shí)現(xiàn)生成JSON字符串的常見(jiàn)三種方式,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下

我的安卓開(kāi)發(fā)經(jīng)歷始于一個(gè)原生安卓項(xiàng)目開(kāi)發(fā)。后來(lái)由于公司有個(gè)項(xiàng)目與幾家醫(yī)療設(shè)備公司合作,需要我寫(xiě)安卓端的橋接代碼給 react native 端的同事調(diào)用。剛開(kāi)始,對(duì)于一些流程的也不懂,直接調(diào)用 toString 就給 RN 了,給 RN 端的數(shù)據(jù)就是比如 {code=NOT_INITIALIZED, message=Please initialize library},導(dǎo)致 RN 端的同事需要自己寫(xiě)解析代碼獲取 key 和 value,聯(lián)調(diào)麻煩。后來(lái)去研究如何轉(zhuǎn)成 json 字符串給 RN 端,聯(lián)調(diào)就順暢多了

下面以錯(cuò)誤處理返回的 code 和 message 為例,演示如何拼接 JSON 字符串

// 演示數(shù)據(jù)
String code = "NOT_INITIALIZED";
String message = "Please initialize library";

手動(dòng)拼接(不推薦)

我們看 json 的結(jié)構(gòu),key 和 string 類(lèi)型的 value 的都是需要前后加雙引號(hào)的,java 沒(méi)有 js 的 '' 或 ``,那怎么插入雙引號(hào)呢,答案是使用反斜杠加字符串

對(duì)于 charString 變量,拼接比較麻煩

char c1 = 'c';
String s1 = "s1";
System.out.println("{" + "\"c1\":" + "\"" + c1 + "\"" + "}");
System.out.println("{" + "\"s1\":" + "\"" + s1 + "\"" + "}");

其他類(lèi)型的變量,拼接就比較簡(jiǎn)單了

boolean b1 = true;
float f1 = 34f;
double d1 = 33.2d;
System.out.println("{" + "\"b1\":" + b1 + "}");
System.out.println("{" + "\"f1\":" + f1 + "}");
System.out.println("{" + "\"d1\":" + d1 + "}");

因此,對(duì)于上面提到的數(shù)據(jù),拼接的話就是下面這樣

String jsonStr = "{" + "\"code\":" + "\"" + code + "\"" + "," + "\"message\":" + "\"" + message + "\"" + "}";

為什么不推薦這種方式呢?數(shù)據(jù)量少還好,多了的話可能會(huì)遇到逗號(hào)忘寫(xiě),字符串忘加前后置反斜杠雙引號(hào)的情況,調(diào)試費(fèi)時(shí)間

使用 Gson 等 JSON 庫(kù)

1.定義一個(gè)數(shù)據(jù)類(lèi)

class ErrorInfo {
    private String code;
    private String message;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

2.使用 Gson 的 toJson 方法

import com.google.gson.Gson;
ErrorInfo errorInfo = new ErrorInfo();
errorInfo.setCode(code);
errorInfo.setMessage(message);
Gson gson = new Gson();
String jsonStr = gson.toJson(errorInfo);

使用 JSONObject(推薦)

import org.json.JSONObject;
JSONObject jsonObject = new JSONObject();
String jsonStr = "";
try {
    jsonObject.put("code", code);
    jsonObject.put("message", message);
    jsonStr = jsonObject.toString();
} catch (JSONException e) {
    throw new RuntimeException(e);
}

為了避免 try catch,我更傾向于搭配 HashMap 使用

HashMap<String, String> map = new HashMap<>();
map.put("code", code);
map.put("message", message);
String jsonStr = new JSONObject(map).toString();

為什么推薦這種方式呢??jī)蓚€(gè)原因,第一,使用起來(lái)比前兩種方式都方便;第二,假如你是原生開(kāi)發(fā)安卓的話,那你大概率會(huì)引入一個(gè) JSON 庫(kù)來(lái)實(shí)現(xiàn)前后端配合,創(chuàng)建一個(gè)數(shù)據(jù)類(lèi)搭配 GSON 可比 jsonObject.getString 使用起來(lái)方便多了,但像我司主要是 RN 項(xiàng)目,為了一個(gè)小功能而引入一個(gè)庫(kù)實(shí)在是不劃算,這時(shí)就是 JSONObject 的用武之地了

到此這篇關(guān)于Java實(shí)現(xiàn)生成JSON字符串的三種方式分享的文章就介紹到這了,更多相關(guān)Java生成JSON字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java自定義異常與異常使用的最佳方式

    Java自定義異常與異常使用的最佳方式

    這篇文章主要介紹了Java自定義異常與異常使用的最佳方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java繪制哆啦A夢(mèng) 超可愛(ài)

    java繪制哆啦A夢(mèng) 超可愛(ài)

    這篇文章主要介紹了java繪制哆啦A夢(mèng),特別的可愛(ài),文中示例代碼介紹的也非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C# 數(shù)據(jù)類(lèi)型轉(zhuǎn)換

    C# 數(shù)據(jù)類(lèi)型轉(zhuǎn)換

    這篇文章主要講解C語(yǔ)言中基本數(shù)據(jù)類(lèi)型、字符串與其它數(shù)據(jù)類(lèi)型以及常見(jiàn)的日期類(lèi)型的轉(zhuǎn)換,希望能給大家做一個(gè)參考。希望能夠給你帶來(lái)幫助
    2021-07-07
  • Java基礎(chǔ)入門(mén)總結(jié)之序列化和反序列化

    Java基礎(chǔ)入門(mén)總結(jié)之序列化和反序列化

    序列化是一種對(duì)象持久化的手段,普遍應(yīng)用在網(wǎng)絡(luò)傳輸、RMI等場(chǎng)景中,下面這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)入門(mén)總結(jié)之序列化和反序列化的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • Intellij IDEA 配置Subversion插件實(shí)現(xiàn)步驟詳解

    Intellij IDEA 配置Subversion插件實(shí)現(xiàn)步驟詳解

    這篇文章主要介紹了Intellij IDEA 配置Subversion插件實(shí)現(xiàn)步驟詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • java  中ThreadLocal實(shí)例分析

    java 中ThreadLocal實(shí)例分析

    這篇文章主要介紹了java 中ThreadLocal實(shí)例分析的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Spring Cloud分布式定時(shí)器之ShedLock的實(shí)現(xiàn)

    Spring Cloud分布式定時(shí)器之ShedLock的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Cloud分布式定時(shí)器之ShedLock的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 從application.properties配置文件獲取的漢字亂碼的解決方法

    從application.properties配置文件獲取的漢字亂碼的解決方法

    平時(shí)從配置文件各種讀取配置參數(shù)都正常,但是有時(shí)候放了個(gè)中文就亂碼,你肯定試過(guò)網(wǎng)上好多方法,都沒(méi)解決,那么來(lái)看下面,恭喜你終于找這里了,本文給大家介紹了從application.properties配置文件獲取的漢字亂碼的解決方法,需要的朋友可以參考下
    2024-03-03
  • Java實(shí)現(xiàn)注冊(cè)登錄跳轉(zhuǎn)

    Java實(shí)現(xiàn)注冊(cè)登錄跳轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)注冊(cè)登錄跳轉(zhuǎn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 淺談Tomcat三種運(yùn)行模式

    淺談Tomcat三種運(yùn)行模式

    這篇文章主要介紹了淺談Tomcat三種運(yùn)行模式,小編冒昧將兩篇文章略微整合了一下,有不足的地方,歡迎指出。需要的朋友可以參考。
    2017-10-10

最新評(píng)論

资兴市| 黄浦区| 新竹市| 中超| 山东| 桑植县| 息烽县| 开原市| 广河县| 大竹县| 泰顺县| 巴中市| 顺义区| 海门市| 平潭县| 台湾省| 凉山| 桐乡市| 万盛区| 丰镇市| 广河县| 和田市| 西乌| 莱阳市| 都昌县| 宁安市| 呼伦贝尔市| 山东省| 密山市| 连南| 博爱县| 泸溪县| 绥滨县| 天水市| 徐汇区| 太白县| 三原县| 交口县| 叶城县| 阳西县| 潍坊市|