如何在 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 数组的图像

如何在angularjs中通过ajax显示来自url的json数组

从 ios 中的 Url 获取多个图像

如何在互联网上显示来自 json url 的图像

来自 url 的日期格式 (JSON)