如何在java中使用com.google.gson.JsonObject将值设置为null?

时间:2016-04-14 11:29:51

标签: java gson jsonobject

如何在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与此类SO中其他帖子中的How do you set a value to null with org.json.JSONObject in java?等类似问题不同。

JSON:

[
  {
    "sun": 1122435343453,
    "mon": 1460538600000,
    "val": 45.900001525878906
  },
  {
    "sun": 1460538600000,
    "mon": 1460538660000,
    "val": 45.900001525878906
  }
  ]

3 个答案:

答案 0 :(得分:8)

您需要使用serializeNulls()的{​​{1}}。它使Gson能够序列化空字段。

您可以在herehere

阅读更多内容

修改

GsonBuilder的使用(来自Official documentation

GsonBuilder

Gson用于将Java对象转换为JSON或从JSON转换。因此,您需要创建一个Gson gson = new GsonBuilder() .serializeNulls() .create(); Data Structure,以便您可以创建一个对象并使用class将整个对象转换为json。

查看此示例

null

当你使用它时:

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;
    }

}

答案 1 :(得分:8)

您可以像这样使用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}

答案 2 :(得分:-1)

你试过setProperty(&#34;&#34;,null)?