如何从JSON解析base64图像

lek*_*eke 2 base64 json objective-c

我无法从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];



    }
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

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

在此输入图像描述

Rob*_*Rob 5

更新的答案:

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

字符62周围未终止的字符串

角色62是徽标的开头.我没有在任何屏幕快照中看到JSON的结束.它看起来像是被切断了.

你没有向我们展示你是如何填充的data,但它看起来几乎就像你正在使用a NSURLConnection但是试图解析didReceiveData而不是等待完整的结果而只调用JSON解析connectionDidFinishLoading.NSURLConnection将对多个调用中断一个长响应didReceiveData,你必须将所有这些都附加NSData到单个NSMutableData,并且只有在完成检索所有内容时才尝试解析它.

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


原始答案:

我不确定这是不是问题,但是你说的是:

NSArray *arrayOfAppearances = [NSJSONSerialization JSONObjectWithData:[[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] dataUsingEncoding:NSUTF8StringEncoding]options:NSJSONReadingAllowFragments error:&error];
Run Code Online (Sandbox Code Playgroud)

应该只是:

NSArray *arrayOfAppearances = [NSJSONSerialization JSONObjectWithData:data
                                                              options:0
                                                                error:&error];
Run Code Online (Sandbox Code Playgroud)

JSONObjectWithData方法需要a NSData而不是a NSString.

并且,如果您没有从此方法返回任何内容,则应检查其内容error并查看其内容.

如果您仍然无法弄清问题是什么,也许您可​​以与我们分享完整的JSON响应(给我们一个URL或将其上传到某个地方),我们可以看看它.