亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 GSON 將 Java 對象轉換為 JSON

使用 GSON 將 Java 對象轉換為 JSON

ibeautiful 2023-08-09 17:18:17
我有一個對象數組,它是函數可以采用的參數值的列表。這可以是任何復雜的對象。我正在嘗試使用 gson 從對象數組構建一個 json,如下所示:private JsonArray createArgsJsonArray(Object... argVals) {     JsonArray argsArray = new JsonArray();     Arrays.stream(argVals).forEach(arg -> argsArray.add(gson.toJson(arg)));         return argsArray; }這會將所有 arg 值視為字符串。它轉義了字符串參數"args":["\"STRING\"","1251996697","85"]我更喜歡以下輸出:   "args":["STRING",1251996697,85]有沒有辦法使用 gson 來實現這一點?我使用了org.json,我能夠達到預期的結果,但它不適用于復雜的對象。編輯:我應用了 @Micha? Ziober 提供的解決方案,但現在如何取回該對象。Gson gson = new Gson();Object strObj = "'";JsonObject fnObj = new JsonObject();JsonObject fnObj2 = new JsonObject();fnObj.add("response", gson.toJsonTree(strObj));fnObj2.addProperty("response", gson.toJson(strObj));System.out.println(gson.fromJson(fnObj.toString(), Object.class)); --> prints {response='}   //Not what I want!System.out.println(gson.fromJson(fnObj2.toString(), Object.class)); --> prints {response="\u0027"}
查看完整描述

3 回答

?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

使用toJsonTree方法:


import com.google.gson.Gson;

import com.google.gson.GsonBuilder;

import com.google.gson.JsonArray;

import java.util.Date;


public class GsonApp {


  public static void main(String[] args) {

    GsonApp app = new GsonApp();

    System.out.println(app.createArgsJsonArray("text", 1, 12.2D));

    System.out.println(app.createArgsJsonArray(new Date(), new A(), new String[] {"A", "B"}));

  }


  private Gson gson = new GsonBuilder().create();


  private JsonArray createArgsJsonArray(Object... argVals) {

    JsonArray argsArray = new JsonArray();


    for (Object arg : argVals) {

      argsArray.add(gson.toJsonTree(arg));

    }


    return argsArray;

  }

}


class A {

  private int id = 12;

}

上面的代碼打?。?/p>


["text",1,12.2]

["Sep 19, 2019 3:25:20 PM",{"id":12},["A","B"]]


查看完整回答
反對 回復 2023-08-09
?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

如果你想最終得到一個字符串,只需執行以下操作:


private String createArgsJsonArray(Object... argVals) {

    Gson gson = new Gson();

    return gson.toJson(argVals);

}

如果您想收回并更改它,只需執行以下操作:


Object[] o = new Gson().fromJson(argValsStr, Object[].class);


查看完整回答
反對 回復 2023-08-09
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

嘗試使用setPrettyPrinting轉義DisableHtml。


Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();

 JsonParser jp = new JsonParser();

 JsonElement je = jp.parse(jsonArray.toString());

 System.out.println( gson.toJson(je));


查看完整回答
反對 回復 2023-08-09
  • 3 回答
  • 0 關注
  • 259 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號