日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

BUG记录 —— JSON转对象部分字段丢失

發布時間:2023/12/10 javascript 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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转对象部分字段丢失的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。