當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
BUG记录 —— JSON转对象部分字段丢失
生活随笔
收集整理的這篇文章主要介紹了
BUG记录 —— JSON转对象部分字段丢失
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在進行http請求之后或者其他只能獲取到JSON字符串的場景中,我們在處理的時候經常會轉為實體對象,以前一直使用阿里的fastjson轉換無往不利,但是今天碰到問題了
//json轉對象 JSON.parseObject(jsonStr, Object.class);//對象轉JSON JSON.toJSONString(obj)?
?
問題:在JSON轉為實體對象的時候部分字段沒有轉換過來,仍然為null;
原因:未知,可能是因為有list字段,有空試下再更新
解決辦法:先把JSON轉為Map<String, Object>(所有有數據的字段都會轉換成功,包括list字段),然后再把map轉為實體對象
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;}?
?
這個問題我目前這個規避解決了,有知道原因的或者看過了fastjson或者有其他解決辦法的同學歡迎交流~~~
總結
以上是生活随笔為你收集整理的BUG记录 —— JSON转对象部分字段丢失的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试是找BUG,不是找茬
- 下一篇: JSON转对象、List