objective-c - 如何从 JSON 中解析 base64 图像

标签 objective-c json base64

我无法从 JSON 请求中解析 base64 字符串的原因是什么?当我把它变成一个小字符串时,它就可以工作了。

澄清一点:

    else if([connection isEqual:self.appearanceConnection]){

        NSArray *arrayOfAppearances = [NSJSONSerialization JSONObjectWithData:[[[NSString alloc] initWithData:data
                                                                                                   encoding:NSUTF8StringEncoding] dataUsingEncoding:NSUTF8StringEncoding]options:NSJSONReadingAllowFragments error:&error];
        NSLog(@"het aantal appearances is: %i", arrayOfAppearances.count);
        [self syncAppearances:arrayOfAppearances];



    }

当我将它编辑为一个小字符串时,我得到的响应是接收到的数组的长度为 1。如果我再次将其更改为图像的 base 64,则长度为 0。

http://cl.ly/image/470Z0X1P3K1b (图像形式 JSON 响应)

enter image description here

我在字符串上得到的错误:

enter image description here

最佳答案

更新的答案:

您现在通知我们 JSONObjectWithData 正在报告错误:

Unterminated string around character 62

第 62 个字符是 Logo 的开头。我在您的任何屏幕快照中都没有看到 JSON 的结尾。它看起来像是被切断了。

您还没有向我们展示您是如何填充数据的,但它看起来几乎就像您正在使用 NSURLConnection 但试图在 didReceiveData< 中进行解析 而不是等待完整结果并仅调用 connectionDidFinishLoading 中的 JSON 解析。 NSURLConnection 会将长响应分解为对 didReceiveData 的多个调用,您必须将所有这些 NSData 附加到单个 NSMutableData,并且只在它检索完所有内容后才尝试解析它。

您需要 (a) 向我们展示您加载数据的代码和/或 (b) 共享完整的 JSON。要么你的 JSON 没有正确终止,要么你试图在整个东西下载之前解析它(可能是后者)。


原答案:

我不确定这是否是问题所在,但您的行是这样说的:

NSArray *arrayOfAppearances = [NSJSONSerialization JSONObjectWithData:[[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] dataUsingEncoding:NSUTF8StringEncoding]options:NSJSONReadingAllowFragments error:&error];

应该只是:

NSArray *arrayOfAppearances = [NSJSONSerialization JSONObjectWithData:data
                                                              options:0
                                                                error:&error];

JSONObjectWithData 方法采用 NSData,而不是 NSString

而且,如果您没有从此方法返回任何内容,您应该检查 error 的内容,看看它说了什么。

如果您仍然无法弄清楚问题出在哪里,或许您可以与我们分享完整的 JSON 响应(给我们一个 URL 或将其上传到某个地方),我们可以查看一下。

关于objective-c - 如何从 JSON 中解析 base64 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16613886/

相关文章:

ios - NSManagedObjectContext performBlockAndWait : and dispatch_semaphore causing a deadlock

iphone - 在通用应用程序中呈现 View Controller ,iOS 4 到 6

json - 将 JSON 中的对象数组解析为 Swift 中的对象

python - 如何使用 JSON 在服务器的响应中传递图像? Base64?

objective-c - 自定义uiview下的阴影

ios - 当用户缩小并且注释彼此太靠近时隐藏 MKAnnotations

javascript - JSON 返回 url 两次

javascript - 如何在 javascript 中添加 json 数组中的所有价格元素

c# - 将base64编码的字节转换为Java和C#中不同的字符串

image - 为什么可以显示带有 "image/jpeg"数据 URL 的 Base64 编码 PNG?