簡體   English   中英

你如何在java中使用com.google.gson.JsonObject將值設置為null?

[英]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.

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