2016-04-02 27 views
0

folgt ein Teil meiner json ArrayHandhabung jsonarray mit Nullwert

{ 
    "format_file_name": [ 
    "/client/compliance_format/payment_of_bonus_act_1965-ce32ec0ee2b94f819ffd2ffdb95ba439.pdf" 
    ] 
} 

Dies ist der Teil meines Code ist während Im es Parsen

JSONArray format_file_name = innerJobj.getJSONArray("format_file_name"); 
        if (format_file_name != null) { 
         for (int k = 0; k < format_file_name.length(); k++) { 
          JSONObject jsonObject1 = format_file_name.getJSONObject(i); 
          Iterator<String> keys = jsonObject1.keys(); 
          while (keys.hasNext()) { 
           file = jsonObject1.getString(keys.next()); 

          } 
         } 
        } 

Der Wert format_file_namenull sein könnte einig mal.

In meinem Code habe ich bereits überprüfte sie es null ist und im Fall, wenn es nicht null ist, dann es Im Parsen und es in einem String zuweisen genannt file

Das Problem ist,

  1. Wenn ich versuche, das JSON-Array mit Nullwert zu analysieren, bekomme ich Value null at format_file_name of type org.json.JSONObject$1 cannot be converted to JSONObject. Wie kann ich es nur analysieren, wenn sein Wert ungleich null ist?
  2. Warum funktioniert mein Code nicht, obwohl ich für die Bedingung von null überprüft habe und es nur analysiere, wenn es nicht Null ist?

Antwort

2

können Sie isNull Methode von JSONObject verwenden.

if(!innerJobj.isNull("format_file_name")) 
{ 
     //your rest of codes 
} 
2

mit array.length() Methode versuchen.

JSONArray format_file_name = innerJobj.getJSONArray("format_file_name"); 
         if (format_file_name.length() >0) { 
          for (int k = 0; k < format_file_name.length(); k++) { 
           JSONObject jsonObject1 = format_file_name.getJSONObject(i); 
           Iterator<String> keys = jsonObject1.keys(); 
           while (keys.hasNext()) { 
            file = jsonObject1.getString(keys.next()); 

           } 
          } 
         } 
1

Wenn Sie Dokumentation für getJSONArray Methode überprüfen:

Gibt den nach Namen zugeordnet Wert, wenn es existiert und ein JSONArray oder wirft anders.

Also, wenn das Array null eine Ausnahme ausgelöst wird, sondern getJSONArray zu verwenden, verwenden Sie eine andere Version: optJSONArray

Gibt den nach Namen zugeordnet Wert, wenn es existiert und ist ein JSONArray oder null sonst.

Es gibt null zurück, ohne keine Ausnahme, so dass Sie es von null Prüfung umgehen kann, versuchen Sie dies:

JSONArray format_file_name = innerJobj.optJSONArray("format_file_name"); 
        if (format_file_name != null) { 
         for (int k = 0; k < format_file_name.length(); k++) { 
         JSONObject jsonObject1 = format_file_name.optJSONObject(k); 
         ... 
         } 
        }