2016-04-14 23 views
1

Javaでcom.google.gson.JsonObjectで値をnullに設定するにはどうすればよいですか?私は確かに価値がのisNullを使用して、nullの場合読み取ることができます - それは、私がnull置くとき、それはちょうどそれを無視するように思える:Javaでcom.google.gson.JsonObjectを使用して値をnullに設定するにはどうすればよいですか?

JSONObject jsonObj = new JSONObject(); 
jsonobjToEra.addProperty("sun", Double.parseDouble(val)); 
jsonobjToEra.addProperty("mon", 22.333); 
jsonobjToEra.addProperty("val", null); //ignoring it 

私はHow do you set a value to null with org.json.JSONObject in java?のような同様の質問が異なるcom.google.gson.JsonObjectを使用していますのでご注意くださいこのSOの他の投稿。

JSON:あなたは(NULL、 "")のsetPropertyを

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

JSONObject.NULL代わりに 'NULL' のを使用してみてください? – deeveeABC

+0

私の旗(重複)が偽であるかどうか分かりません。念のためにコメントを削除しました(うまくいけば旗を元に戻す)。あなたは[これ](http://stackoverflow.com/questions/13613754/how-do-you-set-a-value-to-null-with-org-json-jsonobject-in-java)を試しましたか? – Seth

+0

@MyGod私はgson JsonObjectにはsetPropertyメソッドはありません関連リンクhttps://groups.google.com/forum/#!topic/google-gson/SKLOi5zC1-4 –

答えて

6

あなたはこのようなcom.google.gson.JsonNull.INSTANCE使用することができます。

JsonObject jsonObj = ... 
jsonObj.add("val", JsonNull.INSTANCE); 

または削除をcompletyしたい場合にシリアル化による値

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} 
+0

nice!私はそれを知らなかった。 –

0

てみたのですか?

+0

を見つけました。 –

+0

yeap that true;)でも、次のものを使うことができます:jsonObj .toSting(); – Rom

+0

yeap that true;)でも、jsonObj .toSting()を使用してstringのように使用してから、JsonParser parser = new JsonParser()を使用します。 parser.parse(jsonObj).getAsJsonObject(); – Rom

4

あなたはGsonBuilderserializeNulls()を使用する必要があります。それはGsonがヌルフィールドを直列化することを可能にします。 Gsonはへ/ JSONからJavaオブジェクトを変換するために作られ

Gson gson = new GsonBuilder() 
    .serializeNulls() 
    .create(); 

Official documentationから)GsonBuilderの

あなたはhereでより多くのを読んで、hereでき

EDIT

使用。だから、あなたはそのオブジェクトを作成し、nullとJSONにオブジェクト全体を変換することができるようにData Structureまたはclassようにする必要があります。

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); 
+0

'GsonBuilder'の使用法を教えて、null値をexampleに追加できますか?私はそれが動作するようになっていません。 –

+0

@MyGod編集を参照してください。 –

+0

いいえ、私はgsonのJsonObjectのみを使用しています。 gsonオブジェクトをJsonObjectに配置する方法はありません。 –

関連する問題