激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java實現生成JSON字符串的三種方式分享

Java實現生成JSON字符串的三種方式分享

2023-05-08 01:06未知服務器之家 Java教程

目錄 手動拼接(不推薦) 使用 Gson 等 JSON 庫 使用 JSONObject(推薦) 我的安卓開發經歷始于一個原生安卓項目開發。后來由于公司有個項目與幾家醫療設備公司合作,需要我寫安卓端的橋接代碼給 react native 端的同事調用。剛開始,對

目錄
  • 手動拼接(不推薦)
  • 使用 Gson 等 JSON 庫
  • 使用 JSONObject(推薦)

我的安卓開發經歷始于一個原生安卓項目開發。后來由于公司有個項目與幾家醫療設備公司合作,需要我寫安卓端的橋接代碼給 react native 端的同事調用。剛開始,對于一些流程的也不懂,直接調用 toString 就給 RN 了,給 RN 端的數據就是比如 {code=NOT_INITIALIZED, message=Please initialize library},導致 RN 端的同事需要自己寫解析代碼獲取 key 和 value,聯調麻煩。后來去研究如何轉成 json 字符串給 RN 端,聯調就順暢多了

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

// 演示數據
String code = "NOT_INITIALIZED";
String message = "Please initialize library";

手動拼接(不推薦)

我們看 json 的結構,key 和 string 類型的 value 的都是需要前后加雙引號的,java 沒有 js 的 '' 或 ``,那怎么插入雙引號呢,答案是使用反斜杠加字符串

對于 charString 變量,拼接比較麻煩

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

其他類型的變量,拼接就比較簡單了

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 + "}");

因此,對于上面提到的數據,拼接的話就是下面這樣

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

為什么不推薦這種方式呢?數據量少還好,多了的話可能會遇到逗號忘寫,字符串忘加前后置反斜杠雙引號的情況,調試費時間

使用 Gson 等 JSON 庫

1.定義一個數據類

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();

為什么推薦這種方式呢?兩個原因,第一,使用起來比前兩種方式都方便;第二,假如你是原生開發安卓的話,那你大概率會引入一個 JSON 庫來實現前后端配合,創建一個數據類搭配 GSON 可比 jsonObject.getString 使用起來方便多了,但像我司主要是 RN 項目,為了一個小功能而引入一個庫實在是不劃算,這時就是 JSONObject 的用武之地了

原文地址:https://juejin.cn/post/7229923818348199973

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品99一区二区 | 欧美一级无毛 | 欧美成人精品欧美一级乱黄 | 天天操天天碰 | 成人免费在线网 | www.99热视频| 美女扒开腿让男生桶爽网站 | 久久99亚洲精品 | 久久久久99精品 | 操碰视频在线观看 | 免费观看一区二区三区 | 成人在线视频免费 | 欧美毛片免费观看 | 亚洲日韩精品欧美一区二区 | 国产精品v片在线观看不卡 国产另类一区 | 高清国产福利 | 亚洲人成网站在e线播放 | 亚洲国产精久久久久久久 | 一级做a爰片性色毛片2021 | www.91操 | 369看片你懂的小视频在线观看 | 欧美一级性 | 国产午夜精品在线 | 国产一国产一级毛片视频在线 | ,欧美特黄特色三级视频在线观看 | 欧美成人亚洲 | 欧美精品一级片 | 最新一区二区三区 | 91 久久 | 国产在线观看免费视频软件 | 男男啪羞羞视频网站 | 国产精品久久久久久久久久电影 | 午夜视频亚洲 | 精品在线视频观看 | 成年人网站国产 | 港台三级在线观看 | 免费毛片在线 | 久久精品国产亚洲7777 | 欧美大胆xxxx肉体摄影 | 欧美日韩中文字幕在线 | 黄色7777|