Android取出json的Key和value显示到页面
json示例如下,根据传入不同的Url参数,json返回的数据格式为:数组个数动态变化,数组中数据的对象个数动态变化,对象中key和value动态变化。要取出并显示key和value的值,两个json示例如下:
{
"success": true,
"message": "操作成功!",
"code": 0,
"result": [
{
"同比": "200",
"time": "2019年",
"上半年": "200",
"formNm": "青岛市住户收支与生活状况调查表(A006)"
}
],
"timestamp": 1573525376449
}
{
"success": true,
"message": "操作成功!",
"code": 0,
"result": [
{
"城镇居民": "2",
"全体居民": "1",
"农村居民": "3",
"time": "2019年",
"formNm": "百户居民家庭主要耐用品拥有量"
},
{
"城镇居民": "296",
"全体居民": "286",
"农村居民": "276",
"time": "2019年第一季度",
"formNm": "百户居民家庭主要耐用品拥有量"
},
{
"城镇居民": "256",
"全体居民": "246",
"农村居民": "236",
"time": "2019年第二季度",
"formNm": "百户居民家庭主要耐用品拥有量"
},
{
"城镇居民": "386",
"全体居民": "356",
"农村居民": "346",
"time": "2019年第三季度",
"formNm": "百户居民家庭主要耐用品拥有量"
},
{
"城镇居民": "266",
"全体居民": "262",
"农村居民": "246",
"time": "2019年第四季度",
"formNm": "百户居民家庭主要耐用品拥有量"
},
{
"城镇居民": "2",
"全体居民": "1",
"农村居民": "3",
"time": "2019年",
"formNm": "百户居民家庭主要耐用品拥有量"
}
],
"timestamp": 1574237212845
}
解析呗,写到同一个实体类里面,然后判断是否有值。
"result": [
{
"同比": "200",
"time": "2019年",
"上半年": "200",
"formNm": "青岛市住户收支与生活状况调查表(A006)"
}
]
你这里的“同比”“上半年” 这种就是后台返回给你的? 这个key 的字段 为中文?
这种呢你不能用Gsonformat 封装JavaBean 形式在用gson 解析。 你得手动解析 newJSONobject 形式手动解析 “城镇居民” 解析之后判断 是否有值,如果有值一种形态,没有值另一种形态。。。
你这后台返回给你中文key 你可以锤他了
你的标题“根据不同的url参数”有二义性,改一下。
我到现在都不能用电脑回复,醉了。
建议你描述应用场景和现在面临的问题,你现在问问题就像挤牙膏,一点一点说出来。
如果只是纯粹的展示出来的话:
当然是直接用jsonarray接收,获得全部key然后遍历展示出来(建议用fastjson,可以直接当map来用直接遍历key得到value)。
如果是完全不同的功能(一个项目就一个接口)
有如下几种:
1.强烈建议使用此方案,居然有不同参数返回不同数据,还上百种?完全是后台的锅好不?接口的作用就是区分每个功能而生的。和后台好好说,不同的数据和功能应该增加不同的接口。
如果后台是2货或者比较脑残:
2.请求框架还是老套路,参考https://blog.csdn.net/weimingjue/article/details/88528373,然后单写一个静态类和方法,对不同的参数限制不同的泛型
public class RequestUtils {
public static void httpLogin(BaseActivity activity, String userName, String password, OKHttpListener<LoginBean> listener) {
HttpUtils.postDialog(activity, "一直都是这个接口",
MapUtils.getHttpInstance().put("userName", userName).put("password", password), LoginBean.class, listener);
}
public static void httpShop(BaseActivity activity, long shopId, OKHttpListener<ShopBean> listener) {
HttpUtils.postDialog(activity, "一直都是这个接口",
MapUtils.getHttpInstance().put("shopId", shopId), ShopBean.class, listener);
}
}