Nasıl GSON elemanı için boş değer için kontrol edilir?

oy
15

(Okunabilirliği için basitleştirilmiş) aşağıdaki gibidir: JSON veri bloğunu vardır:

{placeName:Paris,
 sectionCode:,
 elapsed:FT,
 Time:02/24/2015 17:30:00,
 Date:02/24/2015 00:00:00,
 Score:1 : 1,
 statusCode:6};

GSON kitaplığı (bkz kullanıyorum https://code.google.com/p/google-gson/ bir java programında bu JSON işlemek amacıyla).

Ben karşılaşmamdır sorun sectionCode özniteliği (yukarıdaki listede ikinci eleman) ile olduğunu. I işlem am diğer veri JSON blokları, bu eleman mevcut değildir, ya da halen mevcut ve değeri, örneğin 14 Bu hiçbir soruna neden olarak bir tam sayı içeren ya. Ancak burada, sectionCode için değer basitçe.

Aşağıda şu anda (JSON bloğun Bu segmenti işlemek için kullanımı kod jsonrootJSON veri bloğunu ihtiva etmektedir)

 //deal with situation where no section code is provided
 Integer sectioncode = null;
 if ((jsonroot.get(sectionCode) != null) && (jsonroot.get(sectionCode).getAsString() != null) && (!jsonroot.get(sectionCode).isJsonNull()) && (jsonroot.get(sectionCode).getAsString() != ) && (!jsonroot.get(sectionCode).equals(null))) {
              sectioncode = jsonroot.get(sectionCode).getAsInt();
 }

'Eğer' deyiminde sayısız koşullar sectionCode özellik için değer boş bir dize algılamak ve böylece bu durumda yürütülmesini aşağıdaki 'getAsInt' kod önlemek yönelik olduğu belirtildi. Ben bunlardan en az biri tarafından yakalanmış olacağını, ancak bu durum görünmüyor beklenmektedir. kodun bu kısmını karşılaştığında Bunun yerine, ben şu hatayı alıyorum:

Exception in thread main java.lang.NumberFormatException: For input string: at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at com.google.gson.JsonPrimitive.getAsInt(JsonPrimitive.java:260) at MyProgram.extract_general_page_data(MyProgram.java:235) at MyProgram.load_one_page(MyProgram.java:187) at MyProgram.do_all(MyProgram.java:100) at MyProgram.main(MyProgram.java:47)

Ben sadece NumberFormatException gerçekleşecek edeceğini kabul ve bununla başa çıkmak bir deneme / yakalama bloğu koyabilirsiniz farkındayım, ancak bu durumla başa çıkmak için bir dağınık bir yol gibi görünüyor.

Benim soru gerçekten: Neden koşullardan herhangi boş bir değer tespit 'eğer' deyiminde değil mi? Ve bunun yerine neyi kullanabiliriz?

Oluştur 18/03/2015 saat 14:09
kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
3

Eğer bu t, sıfır olup olmadığını görmek için dize uzunluğunu kullanmaya çalıştım,

 if ((jsonroot.get("sectionCode") != null) && (jsonroot.get("sectionCode").getAsString().length() != 0))
 {
   sectioncode = jsonroot.get("sectionCode").getAsInt();
 }
Cevap 18/03/2015 saat 18:11
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more