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
このSOの他の投稿では、 javaのorg.json.JSONObjectで値をnullに設定するにはどうすればよいですか? のような同様の質問とは異なるcom.google.gson.JsonObject
を使用していることに注意してください。
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はnullフィールドをシリアル化できます。
[〜#〜]編集[〜#〜]
GsonBuilderの使用法(From 公式ドキュメント )
Gson gson = new GsonBuilder()
.serializeNulls()
.create();
Gsonは、Javaオブジェクトを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);