2012-05-14 5 views
0

NullPointerExceptionsのコードが膨大になるのを避けるために、ほぼ100フィールドのチャンスごとにオブジェクトのすべての「null」参照を「0」に置き換えたいと思います。しかし、次のコードはそれをまったくしません。JSONObjectの要素を更新してください

private JSONObject vinfo; 
Iterator iter = vinfo.keys(); 
while(iter.hasNext()){ 
    String key = (String)iter.next(); 
    String value = vinfo.getString(key); 
    if (value==null){ 
     vinfo.put(key, "0"); 
    } 
} 

これを正しくコーディングする方法はありますか?

+1

あなたを与えることはありませんあなたはコードが全く動作しません」について、より具体的なことができます"?それは何かを変えますか?私はC#にはあまり慣れていませんが、一般的には、どのコードが実行されたのかを確認するために 'print'sを押すことから始めます。 –

答えて

0

あなたのJSON文字列に使用String.replaceAll()あなたはJavadocなど、それにそれらを置くことができないので、あなたのJSONObjectは、「正常な」null値を含めることはできませんので、それは動作しません0

0

に、すべてのnull値を交換しますJSONObject.put(String name, Object value)メソッドの場合:

値がnullの場合、既存の名前のマッピングはすべて削除されます。

だから、ラインString value = vinfo.getString(key)で「値」文字列は、nullになることはありません。あなたはJSONObject.NULL代わりに対してチェックする必要があります:

String key = (String)iter.next(); 
if (vinfo.isNull(key)) { 
    vinfo.put(key, "0"); 
} 

を加えて、この行があれば、私はよく分からない:vinfo.put(key, "0");ConcurrentModificationException

+0

ありがとう、a.ch.! JSONObject.NULLはレコードを作成し、他の人を助けるだけのものですが、 "if(value ==" null ")"でした.-) – richey

+0

申し訳ありませんが、これは私の間違いです。あなたは実際に 'JSONObject.isNull(name)'を使うべきです - 編集された答えを見てください。 –

関連する問題