Bitte beachten Sie, dass JSONObject.get()
entweder als java.lang.Integer
oder java.lang.Long
, zum Beispiel eine ganze Zahl zurückgeben kann, für {a:3,b:100300000000}
wir
D/+++ (5526): +++a=>class java.lang.Integer:3
D/+++ (5526): +++b=>class java.lang.Long:100300000000
sehen verwende ich den Code wie (beachten Sie, dass wir Typen verwenden long
und double
statt int
und float
, und dass es in meiner Aufgabe sein kann keine verschachtelten JSONObject
oder JSONArray
so werden sie nicht unterstützt):
for (String k : new AsIterable<String>(json.keys())) {
try {
Object v = json.get(k);
//Log.d("+++","+++"+k+"=>"+v.getClass()+":"+v);
if (v instanceof Integer || v instanceof Long) {
long intToUse = ((Number)v).longValue();
...
} else if (v instanceof Boolean) {
boolean boolToUse = (Boolean)v).booleanValue();
...
} else if (v instanceof Float || v instanceof Double) {
double floatToUse = ((Number)v).doubleValue();
...
} else if (JSONObject.NULL.equals(v)) {
Object nullToUse = null;
...
} else {
String stringToUse = json.getString(k);
...
}
} catch (JSONException e2) {
// TODO Auto-generated catch block
Log.d("exc: "+e2);
e2.printStackTrace();
}
}
wo AsIterable
uns die for(:)
Schleife mit einem Iterator verwenden können und ist definiert als:
public class AsIterable<T> implements Iterable<T> {
private Iterator<T> iterator;
public AsIterable(Iterator<T> iterator) {
this.iterator = iterator;
}
public Iterator<T> iterator() {
return iterator;
}
}
Wenn Sie mehr Kontrolle über JSON Parsen möchten, verwenden Sie einen anderen Parser als 'org.json', wie Jackson. – laalto