2012-01-16 14 views
1

オブジェクト私は、次の形式でキーと値のマッピングを返すことができ、サーバーへのコールを作っていますこのJSONObjectインスタンスに "mykey"のマッピングがあり、マッピングの値がnullであるかどうかを判断する方法がわかりませんか?次のようにチェックすると...JSONでヌルでの作業

myJSONObject.has("mykey") && !myJSONObject.isNull("mykey") 

...良い方法がありますか?特に、のオブジェクトがnullと同じものを意味するのか混乱していますか?また

などnullことができるキーのマッピングを取得し、私がキーにnullをマップJSONObjectインスタンスを作成する必要があります。 ...

myJSONObject.put("mykey", JSONObject.NULL); 

...私はこれを行う必要がありますか?

答えて

2

組み込みのAndroid JSONライブラリを使用している場合は、実際にはorg.jsonの(非常に有能な)ライブラリを使用しています。

https://github.com/douglascrockford/JSON-java

そのような場合、私たちはここでの回答のほとんどを参照するコードをgrepすることができます。

特に、JSONObject.NULLオブジェクトがnullと同じ意味を持つかどうか混乱しますか?

これがうまくいけば役立つはず:

/** 
* JSONObject.NULL is equivalent to the value that JavaScript calls null, 
* whilst Java's null is equivalent to the value that JavaScript calls 
* undefined. 
*/ 
private static final class Null { 

    /** 
    * There is only intended to be a single instance of the NULL object, 
    * so the clone method returns itself. 
    * @return  NULL. 
    */ 
    protected final Object clone() { 
     return this; 
    } 

    /** 
    * A Null object is equal to the null value and to itself. 
    * @param object An object to test for nullness. 
    * @return true if the object parameter is the JSONObject.NULL object 
    * or null. 
    */ 
    public boolean equals(Object object) { 
     return object == null || object == this; 
    } 

    /** 
    * Get the "null" string value. 
    * @return The string "null". 
    */ 
    public String toString() { 
     return "null"; 
    } 
} 

/** 
* It is sometimes more convenient and less ambiguous to have a 
* <code>NULL</code> object than to use Java's <code>null</code> value. 
* <code>JSONObject.NULL.equals(null)</code> returns <code>true</code>. 
* <code>JSONObject.NULL.toString()</code> returns <code>"null"</code>. 
*/ 
public static final Object NULL = new Null(); 

パート2:

このJSONObjectインスタンスが "mykeyを" のための値その マッピングを持っているかどうかを判断する方法がわからないですマッピングはnullですか?任意のと同じくらい良い方法についてのようです - 次のチェックを だろう...

myJSONObject.has("mykey") && !myJSONObject.isNull("mykey") 

うん、それを行います。特に、isNullメソッドを使用してnullをチェックしたいのは、JSONObjectが独自のNULLオブジェクトを定義しているからです(上記参照)。

さらに、値が であるキーのマッピングを取得するだけでなく、nullをキーにマップするJSONObjectインスタンスを作成する必要があります。 ...

myJSONObject.put( "mykey"、JSONObject.NULL); ...仕事をするか、 私はこれを行う必要があります別の方法ですか?

これはまさにそのやり方です。特に、javaのnullではなくJSONObject.NULLを使用しています(上記を再度参照してください)。

+0

ハスタラビスタ、ベイビー。 – JohnyTex

1

APIドキュメントをご覧ください。あなたがわからない場合

boolean has(String name) 
     Returns true if this object has a mapping for name. 

boolean isNull(String name) 
     Returns true if this object has no mapping for name or if it has a mapping whose value is NULL. 

、シリアライザ/デシリアライザがどのように動作するかを、あなたは常に簡単なコードスニペットで出力/構文解析結果をテストすることができます。