菜鸟教程小白 发表于 2022-12-12 14:38:32

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


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

<pre><code>    NSURLRequest *request = ];
    NSOperationQueue *queue = [ init];
    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
      NSError *deserializationError;
      id jsonObject = ;
      if (deserializationError) {
            NSLog(@&#34;JSON deserialization error: %@&#34;, deserializationError.localizedDescription);
            return;
      }
} ];
</code></pre>

<p>这是我从服务器收到的信息:</p>

<pre><code>{&#34;photo&#34;:&#34;�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��|��...&#34;}
</code></pre>

<p>但我在解析 JSON 时出错:“JSON 反序列化错误:无法完成操作。(Cocoa 错误 3840。)”。
我认为问题在于 JSON 的格式。但是那些写服务器端的人说他们可以成功地反序列化这个对象。有什么建议如何处理这个 JSON?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>据我所知,JSON 响应必须是字符串。您得到的图像看起来像使用 <a href="https://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference.html#//apple_ref/doc/uid/TP40003793-CH3g-SW6" rel="noreferrer noopener nofollow"><code>NSPropertyListErrorMinimum</code></a> 破坏 JSON 解析的图像数据(<em>Cocoa 错误域:3840</em>)。服务器端 JSON 需要发送编码为 base64 字符串的图像。这将使 JSON 在客户端保持有效.. </p>

<p>您可以对 base64 编码的图像进行解码,以在客户端获取图像数据。使用<a href="https://github.com/nicklockwood/Base64" rel="noreferrer noopener nofollow">this <code>NSData</code> category</a>这将帮助您将 base64 字符串解码为 <code>NSData</code>。 </p>

<pre><code>NSData *imageData = ;
// Create image with data
UIImage *image = [ initWithData:imageData];
</code></pre>

<p>希望有帮助!</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 NSJSONSerialization 从 json 反序列化图像,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/18825396/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/18825396/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 NSJSONSerialization 从 json 反序列化图像