2

次のようなjsonがあります。AndroidでJSONオブジェクトがJSON配列または文字列を返すことを確認するにはどうすればよいですか。

{
    "green_spots": [
    ......
    ],
    "yellow_spots": "No yellow spot available",
    "red_spots": "No red spot available"
}

値が存在する場合、JSON オブジェクトは Array を返します。それ以外の場合は、"No green/red/yellow spot available" のような文字列を返します。私は次の方法で行いました。しかし、他に方法はありますか? アラート文字列が変更されているため、If は機能しません。

JSONObject obj = new JSONObject(response);
String green = obj.getString("green_spots");

// Green spots
if ("No green spot available".equalsIgnoreCase(green)) {
    Log.v("search by hour", "No green spot available");
} else {
    JSONArray greenArray = obj.getJSONArray("green_spots");
            ....
      }
4

5 に答える 5

1

インスタンスオブを使用できます

getString の代わりに、オブジェクトを返す obj.get を実行し、オブジェクトが instanceof String または JSONArray であるかどうかを確認します

編集:

これに付随するサンプルコードを次に示します。

Object itineraries = planObject.get("itineraries");
if (itineraries instanceof JSONObject) {
    JSONObject itinerary = (JSONObject) itineraries;
    // right now, itinerary is your single item
}
else {
    JSONArray array = (JSONArray) itineraries;
    // do whatever you want with the array of itineraries
}
于 2013-10-07T11:31:28.993 に答える
0
JSONObject obj = new JSONObject(response);
JSONArray greenArray = obj.getJSONArray("green_spots");
if(greenArray!=null){
     do your work with greenArray here
}else{
    Log.v("search by hour", "No green spot available");
}
于 2013-10-07T11:30:48.090 に答える
0

Log.e("TAG","See>>"JsonObject.toString); のような単純なオブジェクトを出力するだけです。応答が {} ブロックにある場合、それが [] その配列にある場合、それはオブジェクトです

于 2013-10-07T11:51:23.420 に答える