2012-03-07 4 views
0

一部のURIはJSONObjectオブジェクトを返し、その他のものはJSONArrayを返します。私は通常JSONArrayにすべてを入れて、これまでに例外はありませんでした。もちろん、これは最も安全な方法ではありません。JSON URIが返すものを知る方法?

JSON URIが返すものを知る方法?

これをURIの種類で "推測"できますか、それとも良い方法がありますか?私がURIのタイプを言うとき、http://search.twitter.com/search.json?q=androidのようなTwitterのURIを見れば、私はそれがJSONArrayを返すと推測できます。しかし、そのような "推測"は私が何かをJSONObjectに入れることを妨げている。

答えて

3

これは、API documentationに指定する必要があります。カウントしたくない場合は、try-catchを使用して実際のタイプを見つけることができます。

+0

はい。ですが、いくつかのAPIドキュメントが恐ろしいと情報なしであるget(int)乱交対Iterable<JsonElement>であることによってあなたのforeachループを提供します。フィリップの解答がより速いとは言いません。 – sandalone

+0

面白いことがありますが、この特定のケースでは、ドキュメントは非常に明確です(私が最初に見ています) – MByD

+0

+1を読んでいます。データが何であるかを推測します。 –

1

あなたはorg.jsonクラスを使用していると仮定します。彼らは働きますが、かなり基本的です。

Gsonを試してみて、それははるかに豊かと間違いなくよりよい(*)APIがあります。その代わりis/as方法の

String|Reader|JsonReader input = ... 
JsonElement json = new JsonParser(input).parse(); 
if (json.isJsonArray()) { 
    JsonArray array = json.asJsonArray(); 
    ... 
} else if (json.isJsonObject()) { 
    JsonObject object = json.asJsonObject(); 
    ... 
} 

を、あなたもinstanceof JsonObject/Arrayと通常のJavaキャストを使用することができます。

(*)ほんの一例:GsonのJsonArrayorg.json.JSONArray

関連する問題