2016-04-14 28 views
1

Java'da com.google.gson.JsonObject ile null değerini nasıl belirlersiniz? Kesinlikle bir değer isnull kullanarak null ise okuyabilir - ama ben boş koyduğumuzda, sadece onu yok sayar gibi görünüyor:Java'da com.google.gson.JsonObject ile null değerine nasıl değer atarsınız?

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

I How do you set a value to null with org.json.JSONObject in java? gibi benzer sorular farklıdır com.google.gson.JsonObject kullanıyorum unutmayınız Bu SO diğer yayınlar.

JSON:

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

JSONObject.NULL yerine 'boş' bir kullanmayı deneyin? – deeveeABC

+0

Bayrağımın (yinelenen) false olup olmadığından emin değilim, sadece durumdan dolayı yorumu kaldırır (umarım bayrağı geri alır). Şunu denediniz mi [http://stackoverflow.com/questions/13613754/how-do-you-set-a-value-to-null-with-org-json-jsonobject-in-java)? – Seth

+0

@MyGod İlgili bir bağlantı buldum https://groups.google.com/forum/#!topic/google-gson/SKLOi5zC1-4 –

cevap

6

Böyle com.google.gson.JsonNull.INSTANCE kullanabilirsiniz serileştirme değeri

jsonObj.remove("val"); 

Demo:

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

güzel! Bunu bilmiyordum. –

0

sen denedin mi set_bir_nitelik ("", null)?

+0

Gson JsonObject'de setProperty yöntemi yok. –

+0

yeap true;) ancak şunları kullanabilirsiniz: jsonObj .toSting(); – Rom

+0

yeap, true;) ancak şunu kullanabilirsiniz: jsonObj .toSting() daha sonra string gibi kullanıp JsonParser parser = new JsonParser(); parser.parse (jsonObj) .getAsJsonObject(); – Rom

4

GsonBuilder'un serializeNulls() kullanmanız gerekir. Gson'un boş alanları serileştirmesini sağlar.

Sen GSON Java dönüştürmek için yapılır

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

JSON'dan için/nesneleri here ve here

DÜZENLEME (Official documentation itibaren) GsonBuilder ait

Kullanımı daha okuyabilir. Dolayısıyla, bir Data Structure veya class yapmalısınız, böylece bir nesne oluşturabilir ve tüm nesneyi null ile json'a dönüştürebilirsiniz.

Bu örnek

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

} 

Bkz Ve bunu kullandığınızda:

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

Yoksa kaldırmak complety istiyorsanız:

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" öğesinin null değerlerini örnekle eklemesini söyleyebilir misiniz? Çalışmaya çalışmıyorum. –

+0

@MyGod, düzenlemeye bakın. –

+0

Hayır, yalnızca JsonObject of gson kullanıyorum. JsonObject'e gson nesnesi koymanın bir yolu yoktur. –