Hogyan lehet ellenőrizni az üres érték GSON elem?

szavazat
15

Van egy blokk JSON adatok a következők: (egyszerűsített olvashatóságát):

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

Én használ a GSON könyvtár (lásd https://code.google.com/p/google-gson/ ) annak érdekében, hogy feldolgozni ezt JSON egy java programot.

A probléma én találkozik az a sectionCode attribútum (a második elem a fenti listában). Más JSON adatblokkot, hogy én feldolgozás, ez az elem vagy nem létezik, vagy nem létezik, és egy egész számot tartalmaz, mint az ár-érték pl 14. Ez sem okoz problémát. Itt azonban az értéket a sectionCode egyszerűen „”.

Alul van a kód, amit jelenleg használ feldolgozni ebben a szegmensben a JSON blokk (ahol jsonroottartalmazza a blokk JSON adatok):

 //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();
 }

A számos feltételek a „ha” nyilatkozat a kísérletet felismerni az üres karakterlánc értékének a sectionCode attribútum, és így megakadályozzák a következő „getAsInt” kódot végrehajtó, ha ez az eset áll fenn. Arra számítottam, hogy nem lenne fogott legalább egy közülük, de ez nem úgy tűnik, hogy ez a helyzet. Ehelyett, amikor találkozik ez a része a kódot, kapok a következő hiba:

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)

Tisztában vagyok azzal, hogy én egyszerűen elfogadni, hogy egy NumberFormatException fog sor, és hogy egy try / catch blokk ezzel foglalkozni, de ez úgy tűnik, mint egy rendetlen módon kezelni a helyzetet.

Szóval a kérdés valójában: Miért nem minden az én feltételek a „ha” utasítás kimutatjuk az üres érték? És mit tehettem volna használni helyette?

A kérdést 18/03/2015 14:09
felhasználó
Más nyelveken...                            


1 válasz

szavazat
3

Próbáltad, hogy használja a karakterlánc hosszát, hogy ha ez nulla, mint ez,

 if ((jsonroot.get("sectionCode") != null) && (jsonroot.get("sectionCode").getAsString().length() != 0))
 {
   sectioncode = jsonroot.get("sectionCode").getAsInt();
 }
Válaszolt 18/03/2015 18:11
a forrás felhasználó

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