new JSONArray(List<Map>).tostring()问题

本文探讨了不同安卓系统版本中生成的字符串结果差异,特别是针对JSON格式的变化。高版本系统生成的是标准JSON数组,而低版本系统生成的格式则不规范。文中提供了一种针对非标准JSON字符串的解析方法。

不同的手机系统版本生成string结果不一样。

高系统系统(5.1)设备,转换之后是json单元组成的jsonarray。

array.toString=[{"channelname":"DIALOG NOW","tsavailable":"0","hasprogram":"0",
 "totalcount":"52","filename":"..\/images\/markurl\/mark_1482907604038.png","channelcode":"ch00000000000000001139","mixno":"1","ratingid":"1",
 "columncode":"010100","npvravailable":"0","timeshiftenable":"0","tvodavailable":"0","tvodenable":"0"},{"channelname":"RUPAVAHINI","tsavailable":"120",
 "hasprogram":"1","totalcount":"52","filename":"..\/images\/markurl\/mark_1446201343209.png","channelcode":"ch00000000000000001036","mixno":"2","ratingid":"1",
 "columncode":"010100","npvravailable":"0","timeshiftenable":"1","tvodavailable":"1","tvodenable":"1"},

低系统设备(4.4):

array.tostring=["{tsavailable=0, hasprogram=0, totalcount=52, channelname=DIALOG NOW, columncode=010100, tvodavailable=0,
 filename=..\/images\/markurl\/mark_1482907604038.png, npvravailable=0, tvodenable=0, ratingid=1, channelcode=ch00000000000000001139,
 mixno=1, timeshiftenable=0}","{tsavailable=120, hasprogram=1, totalcount=52, channelname=RUPAVAHINI, columncode=010100, tvodavailable=1,
 filename=..\/images\/markurl\/mark_1446201343209.png, npvravailable=0, tvodenable=1, ratingid=1, channelcode=ch00000000000000001036, mixno=2, 
 timeshiftenable=1}","{tsavailable=120, hasprogram=1, totalcount=52, channelname=CHANNEL EYE, columncode=010100, tvodavailable=1, 
 filename=..\/images\/markurl\/mark_1446201416620.png, npvravailable=0, tvodenable=1, ratingid=1,
 channelcode=ch00000000000000001037, mixno=3, timeshiftenable=1}","{tsavailable=120, hasprogram=1, totalcount=52, channelname=IT...

对于含有“=”号不规范的json字符串,只能一点点分离解析,对于标准的json格式字符串直接转化。

if(str.contains("="))
{
    Map<String, Object> valueMap = new HashMap<String, Object>();
    String newstr = str.substring(1,str.length() - 1);//去掉首尾
    // LogEx.i("lxl","newstr:" + newstr);
    String [] splitArr = newstr.split(",");
    for(int j = 0;j < splitArr.length; j++)
    {
        splitArr[j] = splitArr[j].trim();//去掉首尾空格
        String [] valueArr = splitArr[j].split("=");
        String key = valueArr[0];
        Object value;
        if(valueArr.length >= 2)//防止空数据异常
        {
            value = valueArr[1];
        }
        else{
            value = "";
        }
        // LogEx.i("lxl","key,value:" + key + "," + value);
        valueMap.put(key,value);
   }

    praseChannel(valueMap);
}
else
{
    JSONObject obj = array.getJSONObject(i);
    Map<String, Object> map = getMap(obj);
    praseChannel(map);
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值