解析只包含一个巨大的JsonObject(Gson)的JsonObject的最佳方法是什么

时间:2015-10-30 09:56:07

标签: android json parsing gson

我有一个这种类型的Json:

{
"4f958ef28ecd651095af6ab6": {
     enormous JsonObject
}
}

“4f958ef28ecd651095af6ab6”每次都不同(但我知道它将是什么,因为它是我的api调用的参数),它对应于以下对象的id。我有一个Gson配置的模型来解析巨大的JsonObject。

我的问题是:使用简单

是否合适
new JSONObject(jsonresponse).getJSONObject("4f958ef28ecd651095af6ab6")

从那里与Gson解析? 有没有更好的方法呢?

我想真正的问题是,“新的JSONObject(字符串)”究竟做了什么?

由于

2 个答案:

答案 0 :(得分:0)

我建议使用hybrid(native和gson),因为我不知道如何使用GSON获取未知的jsonobject。

您需要将回复设为JSONArray,然后为每个JSONObject提供回复。您可以尝试将解析代码作为尝试。请检查JSONArray.getJSONObject(int index)方法。然后我们可以使用GSON来获取我们的数据模型以获得已知属性。

如果您可以发布完整的json数据,我们可以给它一起解析的机会。

答案 1 :(得分:0)

你在做的是:

  • 您将所有Json字符串加载到手机内存中(内存问题+长时间完全加载)
  • 您创建了一个较大的JSONObject(相同的问题),以便能够访问每个密钥。

您编写的代码很少,但这不是最高性能的解决方案。

最大限度地减少内存影响并加速对象的操作'创建时,您可以在stream mode中使用Gson。

通过直接读取输入流,可以避免加载太多数据,并且可以直接开始逐个填充对象。

关于JSONObject,它将主要检查你的json字符串是否正确(或者它会抛出JsonException)并且它会让你在搜索密钥时查看对象它的价值。