如何在 iOS 中显示来自 JSON URL 的图像?
Posted
技术标签:
【中文标题】如何在 iOS 中显示来自 JSON URL 的图像?【英文标题】:How to display image from JSON URL in iOS? 【发布时间】:2016-05-02 05:16:36 【问题描述】:我在显示来自 JSON URL 的图像时遇到问题。我想连接两个字符串以显示来自 JSON URL 的图像,但在控制台中出现错误,我无法显示图像。
JSON:
"status": "200",
"requestType": "bannerImages",
"basePath": "http:\/\/192.168.0.33\/cartwebsite3\/",
"bannerPath": "http:\/\/192.168.0.33\/cartwebsite3\/cdn-images\/banner\/",
"response":
"data": [
"banner_id": "40",
"banner_name": "14613036182de40e0d504f583cda7465979f958a98.jpg",
"banner_link": "",
"banner_blocked": "0",
"banner_created": "admin",
"created_on": "1461303618"
,
"banner_id": "39",
"banner_name": "1461303615f99687dd719c4e8bc6a39e946c3d9ef7.jpg",
"banner_link": "",
"banner_blocked": "0",
"banner_created": "admin",
"created_on": "1461303615"
,
"banner_id": "38",
"banner_name": "14613036094efdd2f969559e8b1c92e99f32ded48e.jpg",
"banner_link": "",
"banner_blocked": "0",
"banner_created": "admin",
"created_on": "1461303609"
]
,
"request":
"postData": [],
"getData":
"type": "bannerImages",
"result": "json"
代码:
NSArray * arr1 = [json objectForKey: @ "bannerPath"];
NSLog(@ "%@", arr1);
NSMutableArray * arr2 = [json objectForKey: @ "basePath"];
NSLog(@ "%@", arr2);
[statusarray addObject: outstatus];
[ban_path_arr addObject: arr1];
[ban_base_arr addObject: arr2];
[bannerPath_NameArr addObject: [NSString stringWithFormat: @ "%@%@", arr1, banname]];
NSLog(@ "%@", bannerPath_NameArr);
控制台错误
2016 - 05 - 02 10: 13: 31.173 浏览量[949: 22534]( "http://192.168.0.33/cartwebsite3/cdn-images/banner/(\n \"14613036182de40e0d504f583cda7465979f958a98.jpg\",\n \"1461303615f99687dd719c4e8bc6a39e946c3d9ef7.jpg\",\n \"14613036094efdd2f969559e8b1c92e99f32ded48e.jpg\"\n)" )
我遇到了这样的错误 \n 也显示不必要的。我不知道为什么它会显示在 URL 图片中。
我该如何解决这个问题?
【问题讨论】:
感谢您编辑我的内容 您尚未共享banname
分配,但它看起来像是banner_name
值的整个数组(例如valueForKey:@"banner_name"
,而不是循环遍历data
中的值)。但在您向我们展示您是如何创建 banname
之前,我们无能为力。
【参考方案1】:
NSString *banname = @"14613036182de40e0d504f583cda7465979f958a98.jpg";
NSString *strImageUrl = [NSString stringWithFormat:@"%@",banname];
strImageUrl = [strImageUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[cell.imgView sd_setImageWithURL:[NSURL URLWithString:strImageUrl]
placeholderImage:[UIImage imageNamed:@"placeholder"]];
【讨论】:
【参考方案2】:不要使用 Nsarray 类来连接两个字符串,使用'stringWithFormat',在你的 json 中获取两个字符串值并将其与 Nsstring 合并
检查下面的代码
NSString *banname = @"14613036182de40e0d504f583cda7465979f958a98.jpg";
NSString *imageURL = [NSString stringWithFormat:@"%@%@",[json objectForKey:@"basePath"],banname];
【讨论】:
如果我使用这个横幅名称只显示在控制台中,它不会显示横幅路径 肯定会成功,首先你从json中获取Nsstring中的两个图像路径,然后连接【参考方案3】:NSString * str1 = [json objectForKey: @ "bannerPath"];
NSString * str2 = [json objectForKey: @ "basePath"];
str1 = [str1 stringByReplacingOccurrencesOfString:@"/" withString:@""];
str2 = [str2 stringByReplacingOccurrencesOfString:@"/" withString:@""];
NSString *strImage = [NSString stringWithFormat: @ "%@%@", str1, banname];
imgShow.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:strImage]]];
【讨论】:
如果使用了您的代码,但我的控制台仅显示这样的横幅名称 11:24:33.856 pageview[1388:59423] status 200 2016-05-02 11:24:33.856 pageview[1388:59423] (“14613036182de40e0d504f583cda7465979f958a98.jpg”、“1461303615f99687dd719c4e8bc6a39e946c3d9ef7.jpg”、“14613036094efdd2f969559e8b1c92e99f32>ded” 请尝试使用断点,以便我们准确识别问题以上是关于如何在 iOS 中显示来自 JSON URL 的图像?的主要内容,如果未能解决你的问题,请参考以下文章
如何在ios设备中存储来自url的json数据并在本地使用它
如何在 React 中显示来自 JSON URL 数组的图像