关于Gson-2.4(自己犯得错误)

来源:互联网 发布:arch linux 龙芯 编辑:程序博客网 时间:2024/06/11 17:18

今天没事,想复习下json的用法,巩固下知识,可是遇到了奇葩问题。

1:关于json数据解析成java实体类

第一步要解析成Java实体类,这里用的http://www.bejson.com/json2javapojo/  工具,还是很实用的,可是有一点,有对象嵌套多层时,解析出来的类就会出现问题,自动解析的java类里面属性都是String类型的,需要自己手动修改成实际的对象类型;


2:关于okHttp 

我用的okHttp做的网络请求,然后用response.body().string(); 获得json字符串,打印出来没问题,可是在okHttp内部做Gson处理就会出错,报错是Expected BEGIN_OBJECT but was String at...,我打印出来看到字符串是正确的,而且我检查过了自己改好的javaBean类是没问题的。


3:最后我干脆将打印出来的json字符串复制出来粘贴到一个自定义的String中,发现了问题:

原字符串:{"weatherinfo":{"city":"北京","city_en":"beijing","date_y":"2015年6月18日","date":"","week":"星期四","fchh":"11","cityid":"101010100","temp1":"32℃~19℃","temp2":"28℃~17℃","temp3":"32℃~20℃","temp4":"32℃~21℃","temp5":"31℃~20℃","temp6":"33℃~21℃","tempF1":"89.6℉~66.2℉","tempF2":"82.4℉~62.6℉","tempF3":"89.6℉~68℉","tempF4":"89.6℉~69.8℉","tempF5":"87.8℉~68℉","tempF6":"91.4℉~69.8℉","weather1":"多云转雷阵雨","weather2":"雷阵雨转晴","weather3":"晴","weather4":"多云","weather5":"多云转晴","weather6":"晴转多云","img1":"1","img2":"4","img3":"4","img4":"0","img5":"0","img6":"99","img7":"1","img8":"99","img9":"1","img10":"0","img11":"0","img12":"1","img_single":"1","img_title1":"多云","img_title2":"雷阵雨","img_title3":"雷阵雨","img_title4":"晴","img_title5":"晴","img_title6":"晴","img_title7":"多云","img_title8":"多云","img_title9":"多云","img_title10":"晴","img_title11":"晴","img_title12":"多云","img_title_single":"多云","wind1":"北风3-4级转微风","wind2":"微风","wind3":"微风","wind4":"微风","wind5":"微风","wind6":"微风","fx1":"北风","fx2":"微风","fl1":"3-4级转小于3级","fl2":"小于3级","fl3":"小于3级","fl4":"小于3级","fl5":"小于3级","fl6":"小于3级","index":"炎热","index_d":"天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。","index48":"","index48_d":"","index_uv":"中等","index48_uv":"","index_xc":"不宜","index_tr":"适宜","index_co":"较不舒适","st1":"31","st2":"17","st3":"25","st4":"18","st5":"31","st6":"21","index_cl":"较适宜","index_ls":"适宜","index_ag":"不易发"}}


粘贴进字符串符号“ ”中后变成:                 root = gson.fromJson("{\"weatherinfo\":{\"city\":\"北京\",\"city_en\":\"beijing\",\"date_y\":\"2015年6月18日\",\"date\":\"\",\"week\":\"星期四\",\"fchh\":\"11\",\"cityid\":\"101010100\",\"temp1\":\"32℃~19℃\",\"temp2\":\"28℃~17℃\",\"temp3\":\"32℃~20℃\",\"temp4\":\"32℃~21℃\",\"temp5\":\"31℃~20℃\",\"temp6\":\"33℃~21℃\",\"tempF1\":\"89.6℉~66.2℉\",\"tempF2\":\"82.4℉~62.6℉\",\"tempF3\":\"89.6℉~68℉\",\"tempF4\":\"89.6℉~69.8℉\",\"tempF5\":\"87.8℉~68℉\",\"tempF6\":\"91.4℉~69.8℉\",\"weather1\":\"多云转雷阵雨\",\"weather2\":\"雷阵雨转晴\",\"weather3\":\"晴\",\"weather4\":\"多云\",\"weather5\":\"多云转晴\",\"weather6\":\"晴转多云\",\"img1\":\"1\",\"img2\":\"4\",\"img3\":\"4\",\"img4\":\"0\",\"img5\":\"0\",\"img6\":\"99\",\"img7\":\"1\",\"img8\":\"99\",\"img9\":\"1\",\"img10\":\"0\",\"img11\":\"0\",\"img12\":\"1\",\"img_single\":\"1\",\"img_title1\":\"多云\",\"img_title2\":\"雷阵雨\",\"img_title3\":\"雷阵雨\",\"img_title4\":\"晴\",\"img_title5\":\"晴\",\"img_title6\":\"晴\",\"img_title7\":\"多云\",\"img_title8\":\"多云\",\"img_title9\":\"多云\",\"img_title10\":\"晴\",\"img_title11\":\"晴\",\"img_title12\":\"多云\",\"img_title_single\":\"多云\",\"wind1\":\"北风3-4级转微风\",\"wind2\":\"微风\",\"wind3\":\"微风\",\"wind4\":\"微风\",\"wind5\":\"微风\",\"wind6\":\"微风\",\"fx1\":\"北风\",\"fx2\":\"微风\",\"fl1\":\"3-4级转小于3级\",\"fl2\":\"小于3级\",\"fl3\":\"小于3级\",\"fl4\":\"小于3级\",\"fl5\":\"小于3级\",\"fl6\":\"小于3级\",\"index\":\"炎热\",\"index_d\":\"天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。\",\"index48\":\"\",\"index48_d\":\"\",\"index_uv\":\"中等\",\"index48_uv\":\"\",\"index_xc\":\"不宜\",\"index_tr\":\"适宜\",\"index_co\":\"较不舒适\",\"st1\":\"31\",\"st2\":\"17\",\"st3\":\"25\",\"st4\":\"18\",\"st5\":\"31\",\"st6\":\"21\",\"index_cl\":\"较适宜\",\"index_ls\":\"适宜\",\"index_ag\":\"不易发\"}}", Mroot.class);


然后解析就成功了,怀疑就是这里出现了问题,直接得到的字符串不能转换成gson能够识别的格式,具体可以用


String b=a.replace("“", "\\\”");尝试更改,还是失败,最后还是改成初始的程序就成功了,

可能是电脑太卡导致的clean不及时吧,真是醉了。

第一篇博客没什么营养,为了养成个好习惯,加油!

0 0