【问题标题】:About JSONArray exception on Android (and the max size of a string)关于 Android 上的 JSONArray 异常(以及字符串的最大大小)
【发布时间】:2011-08-15 15:02:37
【问题描述】:

我正在开发一个 Android (2.2) 应用程序,在该应用程序中,我从 Web 服务获取包含自定义对象列表的 JSON 序列化版本的字符串,从而生成 JSONObject 的 JSONArray 字符串。收到的字符串格式正确,我可以通过视力看到,并且可以通过在线验证器证明。在 Android 应用程序中,我将此字符串传递给 JSONArray 构造函数,以获取 JSONObject 数组。这就是问题所在:JSONArray 构造函数抛出一个异常,指出在某些时候字符串以无效的终止符结尾:但异常中指示的点与字符串的真实结尾相距甚远。事实是有问题的字符串很大(大约 160000 个字符):有谁知道传递给 JSONArray 构造函数时字符串的长度是否有限制?保存在内存中的字符串变量是全长的,所以在我看来 JSONArray 构造函数会截断它。有可能吗?

提前致谢, 问候

【问题讨论】:

    标签: android json


    【解决方案1】:

    尝试删除字符串末尾的空格(如果有)并再次解析。 对字符串使用 trim() 并检查一次。

    【讨论】:

    • 谢谢,我下周一试试。顺便说一句,我怀疑这会解决问题,因为当字符串解析刚开始时(大约 1000/160000 个字符)会引发异常。
    【解决方案2】:

    好吧,伙计们,这都是我的错。我从 http 流中读取了字符串,但我没有意识到有时我在字符串未完成时得到了字符串(因此我认为是 JSONArray 错误的异常)。

    【讨论】:

    • 你做了什么来解决这个问题?我有一个类似的问题,我使用 StringBuilder 创建响应字符串,同时我可以从流中读取。
    • 我记不太清楚代码了,我手头也没有,但是你必须阅读包含你的数据的完整流,才能获得正确的 json 字符串。尝试搜索有关在 android 中读取 http 流的内容,如下所示:stackoverflow.com/questions/2492076/…
    猜你喜欢
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2019-07-30
    相关资源
    最近更新 更多