當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
BUG记录 —— JSON转对象部分字段丢失
生活随笔
收集整理的這篇文章主要介紹了
BUG记录 —— JSON转对象部分字段丢失
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在進(jìn)行http請(qǐng)求之后或者其他只能獲取到JSON字符串的場(chǎng)景中,我們?cè)谔幚淼臅r(shí)候經(jīng)常會(huì)轉(zhuǎn)為實(shí)體對(duì)象,以前一直使用阿里的fastjson轉(zhuǎn)換無往不利,但是今天碰到問題了
//json轉(zhuǎn)對(duì)象 JSON.parseObject(jsonStr, Object.class);//對(duì)象轉(zhuǎn)JSON JSON.toJSONString(obj)?
?
問題:在JSON轉(zhuǎn)為實(shí)體對(duì)象的時(shí)候部分字段沒有轉(zhuǎn)換過來,仍然為null;
原因:未知,可能是因?yàn)橛衛(wèi)ist字段,有空試下再更新
解決辦法:先把JSON轉(zhuǎn)為Map<String, Object>(所有有數(shù)據(jù)的字段都會(huì)轉(zhuǎn)換成功,包括list字段),然后再把map轉(zhuǎn)為實(shí)體對(duì)象
public static Object jsonToObject(String json, Class<?> beanClass) throws Exception {if (StringUtils.isBlack(json))return null;Map<String, Object> map = JSON.parseObject(json, Map.class);Object obj = beanClass.newInstance();Field[] fields = obj.getClass().getDeclaredFields();for (Field field : fields) {int mod = field.getModifiers();if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){continue;}if(map.get(field.getName()) == null){continue;}field.setAccessible(true);if(field.getType().getName().equals("java.lang.Long")){field.set(obj, Long.valueOf(map.get(field.getName()) + ""));}else if(field.getType().getName().equals("java.lang.Double")){field.set(obj, Double.valueOf(map.get(field.getName()) + ""));}else if(field.getType().getName().equals("java.lang.Integer")){field.set(obj, Integer.valueOf(map.get(field.getName()) + ""));}else{field.set(obj, map.get(field.getName()));}}return obj;}?
?
這個(gè)問題我目前這個(gè)規(guī)避解決了,有知道原因的或者看過了fastjson或者有其他解決辦法的同學(xué)歡迎交流~~~
總結(jié)
以上是生活随笔為你收集整理的BUG记录 —— JSON转对象部分字段丢失的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试是找BUG,不是找茬
- 下一篇: 【2016计概A期末】照亮房间