[英]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個問題。
我在創建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'
我知道我必須更改第二個參數,但我在文檔中找不到如何執行此操作。
我怎樣才能漂亮地打印出來。
謝謝
您使用了錯誤的方法: 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.