JSON解析器获取图像

Posted

技术标签:

【中文标题】JSON解析器获取图像【英文标题】:JSON parser to get Image 【发布时间】:2010-05-20 10:20:15 【问题描述】:

如何使用 JSON 解析器从服务器获取图像?

NSString *jsonString = [[NSString alloc] initWithData:response 
                                         encoding:NSUTF8StringEncoding];
NSDictionary *results = [jsonString JSONValue]; 
NSArray *photos = [results objectForKey:@"ImageData"]; 

for (NSDictionary *ImageData in photos) 

    NSString *name = [ImageData objectForKey:@"name"]; 
    label.text = name; 
    //NSData *data = [ImageData objectForKey:@"src"];
    //UIImage *imgs = [[UIImage alloc] initWithData:data]; 
    //img.image = [[UIImage alloc]initWithData:[ImageData objectForKey:@"src"]];
 

上面注释的代码行没有显示图像。那么如何显示图像呢?我也在使用来自 Google 代码的 json 框架。

【问题讨论】:

为什么要使用 JSON 解析器? JSON 并不是特别适合二进制数据。 我正在从服务器获取除图像之外的所有数据使用 Json 解析器。如何在检索时将图像数据转换为图像。 您能发布提取图像所需的 JSON 代码吗? 每个json对象的'src'字段是否真的包含二进制图像数据?你是这样对待它的,但这将是一个非常不寻常的 json 用法。 你能告诉我 [ImageData objectForKey:@"src"] 字典中键值“src”的内容,以便你的问题能解释更多... 【参考方案1】:

我使用来自 Google Code 的 json-framework。网址是:json-framework。

【讨论】:

【参考方案2】:

如果您可以修改服务器响应,请询问图像的 Base64 表示。有一些非常快速的编码/解码例程可用 - 更多在CocoaDev: BaseSixtyFour。但是,根据用例,它可能仍然有点矫枉过正。 其他选项例如以 JSON 格式获取图像 url,然后下载它,然后可能存储/缓存它。

【讨论】:

【参考方案3】:

尝试使用它,因为您似乎错过了为 UIImageView 分配内存:

img = [[UIImageView alloc]init];

所以即使图像是用 NSData 形成的,但无法在 ImageView 上显示。

NSString *jsonString = [[NSString alloc] initWithData:response 
                                         encoding:NSUTF8StringEncoding];
NSDictionary *results = [jsonString JSONValue]; 
NSArray *photos = [results objectForKey:@"ImageData"]; 

for (NSDictionary *ImageData in photos) 

    NSString *name = [ImageData objectForKey:@"name"]; 
    img = [[UIImageView alloc]init];
    img.image=[[UIImage alloc]initWithData:[ImageData objectForKey:@"src"]];   
 

希望这会奏效:)

【讨论】:

以上是关于JSON解析器获取图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用json解析android在listview中获取图像

从 json 解析图像

解析 JSON 并提取图像的 URL

为 AsyncTask 实现一个常规的 JSON 解析器函数

ios开发——如何做JSON解析器?

Java内置JSON解析器