2

JSON-Simple を使用して、JSON でツイートを取り込みます。メモリ内で、ユーザー オブジェクトを独自の JSONObject クラスに分割します。

incomingUser = (JSONObject) incomingTweet.get("user");

次に、JSON-Simple を使用してツイートとユーザー オブジェクトからさまざまなフィールドを取り除きます。やっていた

strippedJSON.put("userLocation", incomingUser.get("location").toString();

しかし、時折、ユーザーの場所が に設定されていることが判明しましたnull

だから今、私がストリップしているフィールドがnullであるかどうかを確認し、それを ""に設定しています:

strippedJSON.put("userLocation", (incomingUser.get("location").toString().equals(null)?
        "": incomingUser.get("location").toString());

しかし、デバッグ モードで Eclipse をステップ実行したところ、場所が null に設定されている人が見つかり、関連付けられている JSON オブジェクト フィールドを取り除いて JSON オブジェクト フィールドに"location"入れている部分をまたがりました"user Location"。そして、私はNPEを取得します。

私の三項ステートメントはそれを説明していませんか? それがnullに等しいかどうかをチェックしますが(ポインターが同じであることを確認できる「nullオブジェクト」が1つしかない)、そうである(condtion?trueである)場合は、put("location","")いいえと評価する必要がありますか?

どこが間違っていますか?この null 値を処理するにはどうすればよいですか?

4

2 に答える 2

4

null オブジェクトで .equals() メソッドにアクセスしようとしているため、Null Pointer Exception が発生しています。

locationキーが値を返す場合は、代わりにこれを試してください。

(incomingUser.get("location").toString() == null) ? etc..

incomingUser.get("location")編集:実際には、返される可能性があることが発生しましたnull(つまり、locationキーがJSONObjectorを参照している可能性がありますJSONArray)。その場合、次のものが必要です:

(incomingUser.get("location") == null) ? etc...
于 2012-10-04T15:44:34.673 に答える
0

try and catchブロックを使用して処理するだけです........

try{

strippedJSON.put("userLocation", incomingUser.get("location").toString();



}catch(Exception ex){

  System.out.println("This field is null");

}
于 2012-10-04T14:51:58.620 に答える