![](/img/trans.png)
[英]com.google.gson.JsonObject cannot be cast to com.google.gson.JsonArray in Java
[英]How do you set a value to null with com.google.gson.JsonObject in java?
你如何在java中使用com.google.gson.JsonObject
將值設置為null? 我當然可以通過使用 isNull 來讀取值是否為 null - 但似乎當我放置 null 時,它只是忽略了它:
JSONObject jsonObj = new JSONObject();
jsonobjToEra.addProperty("sun", Double.parseDouble(val));
jsonobjToEra.addProperty("mon", 22.333);
jsonobjToEra.addProperty("val", null); //ignoring it
請注意,我使用的com.google.gson.JsonObject
與類似的問題不同,例如How do you set a value to null with org.json.JSONObject in java? 在此 SO 的其他帖子中。
JSON:
[
{
"sun": 1122435343453,
"mon": 1460538600000,
"val": 45.900001525878906
},
{
"sun": 1460538600000,
"mon": 1460538660000,
"val": 45.900001525878906
}
]
您可以像這樣使用com.google.gson.JsonNull.INSTANCE
:
JsonObject jsonObj = ...
jsonObj.add("val", JsonNull.INSTANCE);
或者,如果您想從序列化中完全刪除值
jsonObj.remove("val");
演示:
String json = "{\"a\": 1, \"b\": 1}";
JsonObject jsonObject = new Gson().fromJson(json, JsonObject.class);
System.out.println(jsonObject); // {"a":1,"b":1}
jsonObject.addProperty("a", 2);
jsonObject.add("b", JsonNull.INSTANCE);
System.out.println(jsonObject); // {"a":2,"b":null}
jsonObject.remove("a");
System.out.println(jsonObject); // {"b":null}
您需要使用GsonBuilder
serializeNulls()
。 它使 Gson 能夠序列化空字段。
編輯
GsonBuilder 的使用
Gson gson = new GsonBuilder()
.serializeNulls()
.create();
Gson 用於將 Java 對象轉換為 JSON 或從 JSON 轉換。 所以你需要創建一個Data Structure
或一個class
以便你可以創建一個對象並將整個對象轉換為帶有null
json 。
看這個例子
public class Country {
String name;
int population;
private List<String> listOfStates;
//getter and setter methods
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPopulation() {
return population;
}
public void setPopulation(int population) {
this.population = population;
}
public List<String> getListOfStates() {
return listOfStates;
}
public void setListOfStates(List<String> listOfStates) {
this.listOfStates = listOfStates;
}
}
當你使用它時:
Country countryObj=new Country();
countryObj.setName("India");
countryObj.setPopulation(1000000);
List<String> listOfStates=new ArrayList<String>();
listOfStates.add("Madhya Pradesh");
listOfStates.add("Maharastra");
listOfStates.add("Rajasthan");
countryObj.setListOfStates(listOfStates);
Gson gson = new GsonBuilder()
.serializeNulls()
.create();
// convert java object to JSON format,
// and returned as JSON formatted string
String json = gson.toJson(countryObj);
你嘗試過setProperty(“”,null)嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.