【发布时间】:2012-09-26 19:55:53
【问题描述】:
我正在使用 Xcode 4.3.2 + 在 iOS 5 中构建应用程序。
我决定使用 SBJson 来解析来自我们服务器的数据流。我已经验证我正在从服务器接收到有效的 JSON 响应。我的问题涉及 SBJsonStreamParser 和 SBJsonParser 类背后的设计。
似乎在 SBJsonParser 中,“objectWithData”方法获取从 JSON 响应接收到的数据,并使用 SBJsonStreamParserAccumulator 将数据流附加到单个 JSON 文档中。一旦数据流被收集到一个对象中,它就会被 SBJsonStreamParser 中的“parse”方法解析。
我在请求较大的 JSON 文档时遇到了几个问题。响应的大小似乎是合理的(特别是 9.4 KB 响应)。似乎 SBJsonStreamParser 在获取大于特定大小的数据流时会中断。解析器在响应较小(~3KB)时成功,但在响应较大(~10KB)时失败。 我使用 NSLog 来验证在这两种情况下,拉一个小的和大的流,这些方法都成功地接收了完整的 json 文档——因为它看起来像 [{"id": .... 123}]。我确信问题在于数据流太长。
我想知道我是否错误地使用了 SBJson 或者这仅仅是解析器的限制?有什么我可以配置的东西允许 SBJsonStreamParser 不对更大(但合理)的数据流抛出错误并继续解析完整的响应?
提前致谢!
【问题讨论】:
-
SBJson报什么错误?
-
在 SBJsonParser 中,在“objectWithData”的 switch 语句中,错误是 SBJsonStreamParserError 情况正在返回错误。在 SBJsonStreamParser 中,正在返回 sbjson_token_error 开关情况。
-
错误信息字符串是什么?它可能会给出提示......
-
实际上没有错误消息。我只知道输入了一个错误开关。我不确定我的解释中遗漏了什么。
-
请检查 SBJsonStreamParser / SBJsonParser 上的错误属性(无论您使用的是哪个)。如果解析器失败但没有设置错误属性,我会非常有兴趣看到发布到github.com/stig/json-framework/issues 的可重现测试用例,因为那将是一个错误。
标签: objective-c json parsing sbjson