Android 如何知道JSON URI返回什么?

Android 如何知道JSON URI返回什么?,android,json,arrays,Android,Json,Arrays,一些URI返回JSONObject对象,而另一些URI返回JSONArray。我通常把所有东西都放在JSONArray中,到目前为止,我没有例外。当然,这不是最安全的方式,因此: 如何知道JSON URI返回什么 我可以通过URI的类型来“猜测”这一点,还是有更好的方法?当我说URI的类型时,看看Twitter的URI,比如http://search.twitter.com/search.json?q=android我可以“猜测”它返回一个JSONArray。但这种“猜测”阻止我将任何东西放入J

一些URI返回
JSONObject
对象,而另一些URI返回
JSONArray
。我通常把所有东西都放在
JSONArray
中,到目前为止,我没有例外。当然,这不是最安全的方式,因此:

如何知道JSON URI返回什么


我可以通过URI的类型来“猜测”这一点,还是有更好的方法?当我说URI的类型时,看看Twitter的URI,比如
http://search.twitter.com/search.json?q=android
我可以“猜测”它返回一个
JSONArray
。但这种“猜测”阻止我将任何东西放入
JSONObject

这应该在中指定,如果您不想依赖它,可以使用try-catch查找实际类型。

这应该在中指定,如果您不想依赖它,可以使用try-catch查找实际类型。

我假设您使用的是
org.json
类。它们可以工作,但非常基本

试试看,它有一个更丰富、更好的(*)API:

除了
is
/
as
方法之外,还可以使用JsonObject/Array的
实例和常规java强制转换


(*)仅举一个例子:Gson的foreach循环是一个
Iterable
而不是
get(int)
组织,即
org.json.JSONArray
我假设您使用的是
org.json
类。它们可以工作,但非常基本

试试看,它有一个更丰富、更好的(*)API:

除了
is
/
as
方法之外,还可以使用JsonObject/Array的
实例和常规java强制转换


(*)仅举一个例子:Gson的foreach循环是通过
Iterable
而不是
get(int)
组织,即
org.json.JSONArray

是的,但是一些API文档非常糟糕,没有任何信息。不是说Philipp的解决方案更快。那就玩得开心吧,但在这个特定的例子中,文档看起来非常清晰(这是我第一次看到它们)+1在阅读文档时——我甚至建议在意外的API响应上失败,而不是猜测数据可能是什么。伙计们,twitter JSON URI只是一个例子:)。但感谢您的建议+1的尝试/捕捉。捕获异常到底是什么。所以很多人认为异常是一个可怕的错误,在很多情况下,使用try/catch可以简单地测试某些条件。是的,但是一些API文档很可怕,没有任何信息。不是说Philipp的解决方案更快。那就玩得开心吧,但在这个特定的例子中,文档看起来非常清晰(这是我第一次看到它们)+1在阅读文档时——我甚至建议在意外的API响应上失败,而不是猜测数据可能是什么。伙计们,twitter JSON URI只是一个例子:)。但感谢您的建议+1的尝试/捕捉。捕获异常到底是什么。很多人认为异常是一个可怕的错误,因为在很多情况下,使用try/catch可以简单地测试某些条件。
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();
  ...
}