【问题标题】:How to display image from JSON URL in iOS?如何在 iOS 中显示来自 JSON URL 的图像?
【发布时间】: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 之前,我们无能为力。

标签: ios objective-c json parsing


【解决方案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”
    • 请尝试使用断点,以便我们准确识别问题
    猜你喜欢
    • 1970-01-01
    • 2019-10-08
    • 2022-01-21
    • 2019-06-18
    • 2020-08-02
    • 2021-06-26
    • 2020-06-25
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多