我无法从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.如果我再次将其更改为图像的基数64,则长度为0.
http://cl.ly/image/470Z0X1P3K1b(图片形式JSON回复)
我在String上遇到的错误:
答案 0 :(得分:5)
更新回答:
您现在通知我们JSONObjectWithData
报告错误:
字符62周围的未终止字符串
字符62是徽标的开头。我没有在任何屏幕快照中看到JSON的结束。它看起来像是被切断了。
您尚未向我们展示您如何填充data
,但它看起来几乎就像您正在使用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或将其上传到某个地方),我们可以看看它。
答案 1 :(得分:2)
非常感谢@Rob!
这里有一点摘要: