一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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久久999久久久综合精品涩 | 国产卡一卡二卡3卡乱码免费 | 青草久久网 | 国产精彩对白综合视频 | 久久精品视在线观看2 | 国产成人h综合亚洲欧美在线 | 性关系免费视频 | 九九精品免视看国产成人 | 国偷盗摄自产福利一区在线 | 男女一级特黄a大片 | 夫妻性生活在线 | 亚洲精品视频在线 | 掀开奶罩边躁狠狠躁软学生 | 日本wwxx护士 | 四虎最新永久免费网址 | 亚洲国产精品福利片在线观看 | 国产精品最新 | 秋霞一级毛片 | free性欧洲 | 国产资源视频在线观看 | 男人的天堂在线观看入口 | 天天久久综合 | 小鸟酱视频在线观看 | 天美影视传媒mv直接看 | 欧美一区二区三区综合色视频 | 欧美激情影音先锋 | 黄色a| 成人操| 毛片免费视频观看 | 国产精品1区2区 | 欧美综合一区二区三区 | 国产成+人+综合+亚洲欧美丁香花 | 美女机巴| 日本视频中文字幕 | 国产高清在线精品一区二区三区 | 99re7在线精品免费视频 |