objective-c - SBJSON 失败,包含二进制数据的 json

标签 objective-c ios json sbjson

我正在使用 Web 服务并使用 sbjson 来解析接收到的数据,如下所示:

NSDictionary *response = [[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]JSONValue];

它运行良好但失败了包含二进制数据的 json (application/pdf) 我在控制台中得到了这个:

-JSONValue failed. Error trace is: (
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=6 \"Invalid high character in surrogate pair\" UserInfo=0x1e0e1700 {NSLocalizedDescription=Invalid high character in surrogate pair}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=6 \"Broken unicode character\" UserInfo=0x1e0e1740 {NSUnderlyingError=0x1e0e1720 \"Invalid high character in surrogate pair\", NSLocalizedDescription=Broken unicode character}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Expected value while parsing array\" UserInfo=0x1e0e1780 {NSUnderlyingError=0x1e0e1760 \"Broken unicode character\", NSLocalizedDescription=Expected value while parsing array}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: content\" UserInfo=0x1e0e17c0 {NSUnderlyingError=0x1e0e17a0 \"Expected value while parsing array\", NSLocalizedDescription=Object value expected for key: content}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: params\" UserInfo=0x1e0e1800 {NSUnderlyingError=0x1e0e17e0 \"Object value expected for key: content\", NSLocalizedDescription=Object value expected for key: params}",
    "Error Domain=org.brautaset.JSON.ErrorDomain Code=3 \"Object value expected for key: request\" UserInfo=0x1e0e18d0 {NSUnderlyingError=0x1e0e1890 \"Object value expected for key: params\", NSLocalizedDescription=Object value expected for key: request}"
)

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]'
*** First throw call stack:
(0x3397d2a3 0x3314f97f 0x338ce55f 0x339050d3 0x576c1 0x5c631 0x5d9bf 0x389a7ef5 0x388e79f1 0x388e790d 0x36bf65df 0x36bf5ccb 0x36c1e133 0x338c374d 0x36c1e593 0x36b8215d 0x33952683 0x33951ee9 0x33950cb7 0x338c3ebd 0x338c3d49 0x3462c2eb 0x36509301 0x46ab9 0x38548b20)
libc++abi.dylib: terminate called throwing an exception
(lldb) 

现在我想知道如何在不移动到另一个 json 库的情况下解决它。 还有其他人处理过包括二进制在内的 json 吗? 谢谢!

最佳答案

发件人:json.org “JSON 是一种文本格式”。将二进制数据进行Base64编码。

参见 SO question “JSON 字符串中的二进制数据”

关于objective-c - SBJSON 失败,包含二进制数据的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14102485/

相关文章:

javascript - 添加变量名称而不是其值,javascript

java - 如何在 spring 应用程序中注册自定义 jackson 过滤器?

objective-c - 第三方代码和 Git

objective-c - 使用 viewDid/WillMoveToSuperview 设置 NSView

iphone - 什么是 iPad 设备上交互式图书的最佳解决方案?

ios - 修复 iOS 拉动刷新动画

ios - 为什么 UIPickerView 在我第一次更改其父 viewController 上的设备方向时不会调整大小?

iphone - “EXC_BAD_ACCESS"收到信号

ios - XCode 不接受我的 CLLocationCoordinate2D。说 "invalid region"

php - 在 json 编码数组上使用 mysql 数组运算符?