簡體   English   中英

使用com.google.code.gson在Java8中創建JSON對象

[英]Create JSON object in Java8 using com.google.code.gson

我正在嘗試使用JAVA 8中的com.google.code.jso創建JSON對象。我有一個對象列表,並且正在遍歷它們。 該對象為:

public class MyObject {
    private String name, status, cause, id;

    public String getName() {
        return name;
    }

    public String getStatus() {
        return status;
    }

    public String getCause() {
        return cause;
    }

    public String getId() {
        return id;
    }

}

我有上述對象的列表,我正在嘗試使用以下(相關代碼)將它們轉換為JSON:

import com.google.gson.JsonObject;

JsonObject status = new JsonObject();
for (MyObject obj : objectLists){
            status.add(obj.getId(),
                    new JsonObject()
                            .add("Name: ", obj.getName())
                            .add("Status: ", obj.getStatus())
                            .add("Cause: ", obj.getCause())
            );
        }

我希望獲得以下形式的JSON:

{

  "0 (this is the id i get from myObject.getId())": {
    "name": The name i get from myObject.getName(),
    "Status": The status from myobject.getStatus(),
    "cause": The status from myobject.getCause()
  },
 "1": {
    "name": "myname",
    "Status": "mystatus",
    "cause": "cause"
  }
}

所以我有2個問題。

  1. 我在創建Json對象時遇到錯誤。 Wrong 2nd argument type. Found: 'java.lang.String', required: 'com.google.gson.JsonElement' Wrong 2nd argument type. Found: 'java.lang.String', required: 'com.google.gson.JsonElement'我知道我必須更改第二個參數,但我在文檔中找不到如何執行此操作。

  2. 我怎樣才能漂亮地打印出來。

謝謝

您使用了錯誤的方法: JsonObject.addProperty() ,而不是JsonObject.add()

JsonObject.add(String, JsonElement) -將嵌套的json元素添加到您的對象:

{
    "root": {
        "nested": {}
    }
}

JsonObject.addProperty(String, String) -向您的對象添加屬性(它可以是任何原始或String):

{
    "root": {
        "property": "some string"
    }
}

為什么不使用它呢?

Gson.toJson(obj);

您應該將字符串包裝在JsonPrimitive對象中,例如:

new JsonObject().add("Name: ", new JsonPrimitive(obj.getName()));

要啟用漂亮打印,您必須使用GsonBuilder.setPrettyPrinting()

Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println(gson.toJson(obj));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM