gpt4 book ai didi

ios - 使用 NSJSONSerialization 从 json 反序列化图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:30 25 4
gpt4 key购买 nike

我正在尝试使用 NSJsonSerialization 反序列化来自服务器的 JSON。服务器返回转换为字符串的 png 图像。这是我的代码:

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSError *deserializationError;
id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:&deserializationError];
if (deserializationError) {
NSLog(@"JSON deserialization error: %@", deserializationError.localizedDescription);
return;
}
} ];

这是我从服务器收到的:

{"photo":"�PNG\r\n\u001A\n\u0000\u0000\u0000\rIHDR\u0000\u0000\u0000:\u0000\u0000\u0000:\b\u0002\u0000\u0000\u0000n��\u007F\u0000\u0000\u001FrIDATx�}z\u0005W[y��|��..."}

但我在解析 JSON 时遇到错误:“JSON 反序列化错误:操作无法完成。(Cocoa 错误 3840。)”。我认为问题出在 JSON 的格式上。但是伙计们,写服务器端的人说他们可以成功反序列化这个对象。对如何处理这个 JSON 有什么建议吗?

最佳答案

据我所知,JSON 响应必须是字符串。您获得的图像看起来像破坏 JSON 解析的图像数据 NSPropertyListErrorMinimum (Cocoa 错误域:3840)。服务器端 JSON 需要发送编码为 base64 字符串的图像。这将使 JSON 在客户端有效..

您可以在客户端对base64编码的图像进行解码,得到图像数据。使用 this NSData category这将帮助您将 base64 字符串解码为 NSData

NSData *imageData = [NSData dataWithBase64EncodedString:base64JSONString];
// Create image with data
UIImage *image = [[UIImage alloc] initWithData:imageData];

希望对您有所帮助!

关于ios - 使用 NSJSONSerialization 从 json 反序列化图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18825396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com