xUtils获取json用gson解析json

首先导入xUtils 和 gson 的 jar 包。

API 23之后的xUtils导入后运行程序会报错。错误:无法访问HttpRequestBase找不到org.apache.http.client.methods.HttpRequestBase的类文件。

解决办法是:android studio:在相应的module下的build.gradle中加入:
android {
    useLibrary 'org.apache.http.legacy'
}
注意放置的位置:是在android {}中。


private void requestServer() {
    HttpUtils httpUtils = new HttpUtils();
    httpUtils.send(HttpRequest.HttpMethod.GET, GlobalUtils.URL+cityName, new RequestCallBack<String>() {
        @Override
        public void onSuccess(ResponseInfo<String> responseInfo) {
            String result = responseInfo.result;
            if (!result.contains("1000")){
                Toast.makeText(mContext, "没有这个城市!请输入正确的城市名!比如:北京", Toast.LENGTH_LONG).show();
                return;
            }
            holder.ll_weather.setVisibility(View.VISIBLE);
            holder.ll_weather_bottom.setVisibility(View.VISIBLE);
            holder.main_tv_tip.setVisibility(View.GONE);
            Log.e("seven", result);
            gsonParseJson(result);
        }

        @Override
        public void onFailure(HttpException e, String s) {
            Toast.makeText(mContext, "访问服务器失败", Toast.LENGTH_SHORT).show();
            holder.ll_weather.setVisibility(View.GONE);
            holder.ll_weather_bottom.setVisibility(View.GONE);
            holder.main_tv_tip.setVisibility(View.VISIBLE);
        }
    });
}

使用xUtils的HttpUtils的send方法传入访问方式、服务器URL、new一个请求回调。来获取json数据。


private void gsonParseJson(String json) {
    Gson gson = new Gson();
    WeatherGson weatherGson = gson.fromJson(json, WeatherGson.class);
    Log.e("seven", "解析结果" + weatherGson);
    setTextData(weatherGson);
    setFutureData(weatherGson);
}

使用gson的fromJson方法传入json字符串、javaBean类。来解析json数据封装到javaBean对象。

javaBean中遇到 {} 创建类对象、遇到 [] 创建ArrayList集合(泛型基本为类对象)。使用数据时用get方法来获取数据。


xUtils需要加权限!!

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值