【问题标题】:How can I parse a large JsonArray from Volley request response如何从 Volley 请求响应中解析大型 JsonArray
【发布时间】:2018-12-18 13:23:18
【问题描述】:

我从事一个 Android 项目。 我有一个 Volley 请求,它返回给我一个对象响应。 这个响应是一个 JsonArray 字符串,里面有 x JsonObject。 JsonArray 超过 40MB。 如何解析这个 JsonArray ?

【问题讨论】:

  • 您正在接收一个 40MB 的 JSONArray 字符串? oO 或者什么是“Mo”?
  • 抱歉,Mo 是 MB 的法语单词 ( 1Mo = 1MB )。
  • 你试过JSONArray response = new JSONArray(your40MBString);吗?
  • 是的,我试试:JSONArray jsonArray = new JSONArray((String) response); 我有一些内存日志,例如:07-10 18:01:41.504 5447-5457/com.I/art: Background partial concurrent mark sweep GC释放 73958(2MB) 个 AllocSpace 对象,1(96MB) 个 LOS 对象,6% 空闲,225MB/241MB,暂停 2.009ms 总共 109.478ms 等待阻塞的 GC Alloc

标签: java android arrays json android-volley


【解决方案1】:

Volley 并不适合处理大量响应。您可能还会遇到类似这个问题的问题-Android, Volley Request, the response is blocking the main thread。我相信使用RetrofitOK Http 库可以解决您的问题。

【讨论】:

    【解决方案2】:

    用okhttp试试

    volley 将整个 http 响应内容以 byte[] 的形式存储在内存中,然后转换为 String 或 Json 或其他类型,因此无法处理巨大的响应,应使用 okhttp 代替。

    https://github.com/mcxiaoke/android-volley/issues/80#issuecomment-138433200

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2018-09-22
      • 1970-01-01
      • 2019-12-12
      相关资源
      最近更新 更多