如何将阿里云天气接口中返回的天气图标转换成对应的url

上一篇文章中我们谈到了阿里云天气接口的使用,但是,在这个接口返回的数据中,有一个图标问题是需要我们注意的。

如图所示:

阿里云接口返回的天气图标是一个状态值,拿到之后是没法直接使用的,所以,我们需要将img的状态值替换成

我们所需要的url,然后在传送到客户端。

处理这个问题的思路是很多的,下面我就说一下自己的思路:

//step1 调用阿里云天气接口返回数据
String host = "http://jisutqybmf.market.alicloudapi.com";
String path = "/weather/query";
String method = "GET";
String appcode = "efef9016ff904a92baaae4be65a*****";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
headers.put("Authorization", "APPCODE " + appcode);
Map<String, String> querys = new HashMap<String, String>();
querys.put("city", "北京");
HttpResponse response = WeatherForexUtils.doGet(host, path, method, headers, querys);
//step2 weather查询出来的结果 转换成字符串
String weather = EntityUtils.toString(response.getEntity());
//step3 将weather中所有的 ":" 替换成@
String weatherReplace = weather.replace("\":\"", "@");
//step4 自己定义的json字符串   这个json我是存在了数据库中  文章底部我会给大家给出自己定义的json数组供参考
String weatherIcon = getMessage(SERVICE);
//step5 将字符串转换为json数组  然后遍历 替换目标str中的img@1  成自己需要的newStr,注意:需要倒序遍历
JSONArray json = JSONArray.parseArray(weatherIcon);

if(json.size()>0) {
	for (int i = json.size()-1; i >=0; i--) {
		JSONObject job = json.getJSONObject(i);
		if(weatherReplace.indexOf(job.get("imgId").toString())!=-1){
			weatherReplace = weatherReplace.replace(job.get("imgId").toString(),job.get("imgPath").toString());
		}
	}
}
//step6 将newStr中的 @ 替换为 ":"  然后就大功告成 此时newStr就是我们需要的数据了
String string=weatherReplace.replace("@", "\":\"");
如图所示,就是转换后的数据结构:



完整的代码逻辑如下,可以直接使用

String host = "http://jisutqybmf.market.alicloudapi.com";
String path = "/weather/query";
String method = "GET";
String appcode = "efef9016ff904a92baaae4be65a******";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
headers.put("Authorization", "APPCODE " + appcode);
Map<String, String> querys = new HashMap<String, String>();
querys.put("city", "北京");
try {
HttpResponse response = WeatherForexUtils.doGet(host, path, method, headers, querys);
/**
 * 处理天气图片的逻辑
 */

// 1 weather查询出来的结果 转换成字符串
String weather = EntityUtils.toString(response.getEntity());

// 2 将weather中所有的 ":" 替换成 @
String weatherReplace = weather.replace("\":\"", "@");

// 3 查询出自己定义的json字符串
String weatherIcon = getMessage(SERVICE);

// 4 将字符串转换为json数组  然后遍历 替换目标str中的img@1  成自己需要的newStr
JSONArray json = JSONArray.parseArray(weatherIcon);

if(json.size()>0) {
	for (int i = json.size()-1; i >=0; i--) {
		JSONObject job = json.getJSONObject(i);
		if(weatherReplace.indexOf(job.get("imgId").toString())!=-1){
			weatherReplace = weatherReplace.replace(job.get("imgId").toString(),job.get("imgPath").toString());
		}
	}
}
// 5 将newStr中的 @ 替换为 :  后set
String string=weatherReplace.replace("@", "\":\"");

} catch (Exception e) {
e.printStackTrace();
}

这是自己定义的json数组,图片需要自己shangchu供参考使用。注:图片在阿里云官网有,可以直接打包下载
[
    {
        "imgId":"img@0",
        "imgPath":"img@http://img23/column/2018/01/19/24/397601921b9042478392510a3f69e983_72_72.png"
    },
    {
        "imgId":"img@1",
        "imgPath":"img@http://img21/column/2018/01/19/12/87f7a363d92c4b16a98533e7075f865a_72_72.png"
    },
    {
        "imgId":"img@2",
        "imgPath":"img@http://img21/column/2018/01/19/12/87f7a363d92c4b16a98533e7075f865a_72_72.png"
    },
    {
        "imgId":"img@3",
        "imgPath":"img@http://img25/column/2018/01/19/28/7bc0a23cd89048ecad303a2b06b00f51_72_72.png"
    },
    {
        "imgId":"img@4",
        "imgPath":"img@http://img25/column/2018/01/19/28/7bc0a23cd89048ecad303a2b06b00f51_72_72.png"
    },
    {
        "imgId":"img@5",
        "imgPath":"img@http://img22/column/2018/01/19/34/c4a26805f9de4040a92ba89e588c9da6_72_72.png"
    },
    {
        "imgId":"img@6",
        "imgPath":"img@http://img22/column/2018/01/19/19/32aca847f178450d9773f597a1337b94_72_72.png"
    },
    {
        "imgId":"img@7",
        "imgPath":"img@http://img22/column/2018/01/19/3/ad51d7948ff3477b978ef62efd703cf1_72_72.png"
    },
    {
        "imgId":"img@8",
        "imgPath":"img@http://img25/column/2018/01/19/79/a8a3e1d2f0ad455f8142ec450937ee2f_72_72.png"
    },
    {
        "imgId":"img@9",
        "imgPath":"img@http://img25/column/2018/01/19/54/e67a22d5c66642848a72d816eb889ac9_72_72.png"
    },
    {
        "imgId":"img@10",
        "imgPath":"img@http://img24/column/2018/01/19/78/45cac9196907421fa1c9f0f3c2794396_72_72.png"
    },
    {
        "imgId":"img@11",
        "imgPath":"img@http://img21/column/2018/01/19/73/b6146064c39f49af97924805d88a9841_72_72.png"
    },
    {
        "imgId":"img@12",
        "imgPath":"img@http://img21/column/2018/01/19/51/538a0b0225c04706ab3dee1668e449e2_72_72.png"
    },
    {
        "imgId":"img@13",
        "imgPath":"img@http://img23/column/2018/01/19/59/6d1a352527fc4d87a333c7b609c3cd60_72_72.png"
    },
    {
        "imgId":"img@14",
        "imgPath":"img@http://img2/2018/01/19/50/46fa30c6ca3e4e608812cd41d5dd2011_72_72.png"
    },
    {
        "imgId":"img@15",
        "imgPath":"img@http://img23/column/2018/01/19/76/de1006a3e2fa461a8a71d592a43ab5a3_72_72.png"
    },
    {
        "imgId":"img@16",
        "imgPath":"img@http://img22/column/2018/01/19/7/18e7c3c797e14d7fbbc43c188cb3499b_72_72.png"
    },
    {
        "imgId":"img@17",
        "imgPath":"img@http://img24/column/2018/01/19/77/05706a019e80428db6f336ca880c0f5b_72_72.png"
    },
    {
        "imgId":"img@18",
        "imgPath":"img@http://img21/2018/01/19/86/ff94f54e905642549a8e65f2e553c2fa_72_72.png"
    },
    {
        "imgId":"img@19",
        "imgPath":"http://img23/column/2018/01/19/40/f47bbd04e94f489dbb0864d2a769fae0_72_72.png"
    },
    {
        "imgId":"img@20",
        "imgPath":"img@http://img24/column/2018/01/19/39/69a300ad03784e8d9f2cd48ed973807a_72_72.png"
    },
    {
        "imgId":"img@21",
        "imgPath":"img@http://img22/column/2018/01/19/72/db7e50835fee4641955b42b730814f99_72_72.png"
    },
    {
        "imgId":"img@22",
        "imgPath":"img@http://img25/column/2018/01/19/16/68c6e6f5c2ae4e7b965ccdd974e1745d_72_72.png"
    },
    {
        "imgId":"img@23",
        "imgPath":"img@http://img22/column/2018/01/19/85/7f0a558026b94ee6a3ee48a8b75e6e4c_72_72.png"
    },
    {
        "imgId":"img@24",
        "imgPath":"img@http://img23/column/2018/01/19/17/02d172f84365436caf37a9db3a706f6c_72_72.png"
    },
    {
        "imgId":"img@25",
        "imgPath":"img@http://img21/column/2018/01/19/38/ee95603625ff4f68bf64087a73b49437_72_72.png"
    },
    {
        "imgId":"img@26",
        "imgPath":"img@http://img25/column/2018/01/19/23/e7e96aefa9474556bc6412be79bfcc07_72_72.png"
    },
    {
        "imgId":"img@27",
        "imgPath":"img@http://img23/column/2018/01/19/25/3882f351cfa243fc9434b0aa4c47bf05_72_72.png"
    },
    {
        "imgId":"img@28",
        "imgPath":"img@http://img23/column/2018/01/19/90/206dae34c6a147d791bc72d34fd6900b_72_72.png"
    },
    {
        "imgId":"img@29",
        "imgPath":"img@http://img23/column/2018/01/19/42/17e274ca4ccd4220b4bc07bac178f598_72_72.png"
    },
    {
        "imgId":"img@30",
        "imgPath":"img@http://img21/column/2018/01/19/39/18eae5c425c7443ea3fe8df064548797_72_72.png"
    },
    {
        "imgId":"img@31",
        "imgPath":"img@http://img22/column/2018/01/19/44/078c8139f3f04a5fa5913f5a7b894569_72_72.png"
    },
    {
        "imgId":"img@32",
        "imgPath":"img@http://img24/column/2018/01/19/85/ca1eeba5f13c44b0a0c9abc837bebaa1_72_72.png"
    },
    {
        "imgId":"img@49",
        "imgPath":"img@http://img24/column/2018/01/19/14/a519235965d647d989907d1b93ebd1cf_72_72.png"
    },
    {
        "imgId":"img@53",
        "imgPath":"img@http://img25/column/2018/01/19/68/dd793587c42e4123a7bbaf70c2ac5b8a_72_72.png"
    },
    {
        "imgId":"img@54",
        "imgPath":"img@http://img2/column/2018/01/19/42/a156ab7b085b4d48a875ac345fed4986_72_72.png"
    },
    {
        "imgId":"img@55",
        "imgPath":"img@http://img25/column/2018/01/19/94/5fedcba96043460c91bf58376dd1ea1b_72_72.png"
    },
    {
        "imgId":"img@56",
        "imgPath":"img@http://img23/column/2018/01/19/97/65a1e57f28354d1cac8fc8f461ef23f8_72_72.png"
    },
    {
        "imgId":"img@57",
        "imgPath":"img@http://img24/column/2018/01/19/76/75c9917d08594a209ea3932cc4d23165_72_72.png"
    },
    {
        "imgId":"img@58",
        "imgPath":"img@http://img23/column/2018/01/19/4/66b953412e9640558bb38266e8bef5c7_72_72.png"
    },
    {
        "imgId":"img@99",
        "imgPath":"img@http://img23/column/2018/01/19/72/10d808d1c8f9492db1e28a4234e476c2_72_72.png"
    },
    {
        "imgId":"img@301",
        "imgPath":"img@http://img25/column/2018/01/19/71/3cd02a71b60a463e9234c9d4e5a7ec5e_72_72.png"
    },
    {
        "imgId":"img@302",
        "imgPath":"img@http://img22/column/2018/01/19/20/c240f7a07a5542fabdd0e822be06fb38_72_72.png"
    }
] 



猜你喜欢

转载自blog.csdn.net/zhang_pengcheng/article/details/79257194
今日推荐