json解析 JSONObject JSONArray 遇到了float 异常了

来源:互联网 发布:淘宝自动输入验证码 编辑:程序博客网 时间:2024/06/14 14:20

1、问题背景

1.解析下面json

{"result":[{"adcd":"17032811121000001","adNm":"奎屯市","countYesd":11.0,"engManCd":"北京奥特美克","estStYm":"2017-06-04 14:22:47","lgtd":11.10000000,"loc":"北京奥特美克","lttd":11.10000000,"stcd":"1111111","stNm":"测试雨量站1","ts":"2017-05-31 14:37:10"},{"adcd":"17032811121000008","adNm":"兵团一三一团","countYesd":22.0,"engManCd":"北京市海淀区","estStYm":"2017-06-02 14:58:44","lgtd":22.00000000,"loc":"北京海淀","lttd":22.00000000,"stcd":"222","stNm":"测试雨量站2","ts":"2017-06-02 14:59:17"},{"adcd":"17032811121000001","adNm":"奎屯市","countYesd":null,"engManCd":"奎屯","estStYm":"2017-06-02 14:58:44","lgtd":84.78595732,"loc":"奎屯","lttd":44.31918123,"stcd":"20105061","stNm":"奎屯河水管站","ts":null},{"adcd":"17032811121000001","adNm":"奎屯市","countYesd":null,"engManCd":"奎屯","estStYm":"2017-06-02 14:58:44","lgtd":84.90324497,"loc":"奎屯","lttd":44.42627155,"stcd":"20105065","stNm":"奎屯市政府","ts":null}],"code":1}

2.分析

本来想用gson来解析,但是总是异常,而且当时我以为是网络问题,因为网络框架的onerror爆错了,后来发现,onsuccess也触发了,后来发现onsuccess中解析错误,才导致了,onerror;
java bean为 HydrologyRainStation

    private String stcd;//测站编码    private String stNm;//测站名称    private String engManCd;//管理单位    private String loc;//所在地(地址)    private String estStYm;//设站年月    private String adcd;//行政区编码    private String adNm;//行政区名称    private String ts;//监测时间    private Double lgtd;//测站经度    private Double lttd;//测站纬度    private String countYesd;//**原来为Float格式**

3.下面是用gson解析的代码

 Gson gson = new Gson();                String data = json.getString("result");                mList.clear();                try {                    mList = gson.fromJson(data, new TypeToken<List<HydrologyRainStation>>(){}.getType());                } catch (Exception e) {                    LogUtils.e("st","result转bean解析有问题"+e);                    e.printStackTrace();                }

4.用JSONArray来解析

下面注释的代码

JSONArray jsonA=json.getJSONArray("result");for (int i=0;i<jsonA.length();i++){HydrologyRainStation hrs=new HydrologyRainStation();JSONObject jsonR= jsonA.getJSONObject(i);hrs.setAdNm(jsonR.getString("adNm"));hrs.setAdcd(jsonR.getString("adcd"));hrs.setEngManCd(jsonR.getString("engManCd"));hrs.setEstStYm(jsonR.getString("estStYm"));hrs.setLoc(jsonR.getString("loc"));hrs.setLgtd(jsonR.getDouble("lgtd"));hrs.setLttd(jsonR.getDouble("lttd"));hrs.setCountYesd(String.valueOf(jsonR.get("countYesd")));hrs.setTs(jsonR.getString("ts"));hrs.setStNm(jsonR.getString("stNm"));hrs.setStcd(jsonR.getString("stcd"));mList.add(hrs);LogUtils.e("sjt", "size数据为" + mList.size());                }    

hrs.setCountYesd(String.valueOf(jsonR.get(“countYesd”)));原来
写的,getDouble…想用double转float,疯了
而,没有getFloat,为何
见:JSON巧遇Float,请注意转向

5.发现都有错

关键是result 里有一个值为float
而,javabean里也写的float,Float写string解决

原创粉丝点击