亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

解決FastJson中"$ref重復引用"的問題方法

2024-07-14 08:42:59
字體:
來源:轉載
供稿:網友

解決FastJson中"$ref重復引用"的問題,先來看一個例子吧:

public static void main(String[] args) { UserGroup userGroup = new UserGroup().setName("UserGroup"); User user = new User("User"); for (int i = 0; i < 3; i++) {  userGroup.addUser(user); } Console.log(JSON.toJSONString(userGroup));}@Data@AllArgsConstructorstatic class User { private String name;}@Data@Accessors(chain = true)static class UserGroup { private String name; private List<User> users = Lists.newArrayList(); public UserGroup addUser(User user) {  this.getUsers().add(user);  return this; }}

輸出結果:

{"name":"UserGroup","users":[{"name":"User"},{"$ref":"$.users[0]"},{"$ref":"$.users[0]"}]}

<!--- more --->

上面的現象就是將user對象的引用重復使用造成了重復引用問題,Fastjson默認開啟引用檢測將相同的對象寫成引用的形式:

{"$ref": "$"} // 引用根對象{"$ref":"@"} // 引用自己{"$ref":".."} // 引用父對象{"$ref":"../.."} // 引用父對象的父對象{"$ref":"$.members[0].reportTo"} // 基于路徑的引用

目前來說,前端還沒有一個很好的辦法來解析這樣的JSON格式。

除了上面的重復引用外, 還衍生出了另外一個概念:"循環引用",下面來看下兩者之間的區別吧:

  • 重復引用:指一個對象引用重復出現多次
  • 循環引用:對象A引用對象B,對象B引用對象A(這種情況一般是個雷區,輕易不要嘗試的好,很容易引發StackOverflowError)

再來看一個循環引用的例子:

public static void main(String[] args) { Order order = new Order().setName("Order"); Item item = new Item().setName("Item"); item.setOrder(order); order.setItem(item); Console.log(JSON.toJSONString(order)); Console.log("----------------------------"); Console.log(JSON.toJSONString(item));}@Data@Accessors(chain = true)static class Order { private String name; private Item item;}@Data@Accessors(chain = true)static class Item { private String name; private Order order;}

{"item":{"name":"Item","order":{"$ref":".."}},"name":"Order"}
----------------------------
{"name":"Item","order":{"item":{"$ref":".."},"name":"Order"}}

解決方案

關閉FastJson引用檢測機制(慎用,循環引用時可能導致StackOverflowError)

JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect)

避免循環引用(某一方的引用字段不參與序列化:@JSONField(serialize=false))

避免一個對象引用被重復使用多次(使用拷貝的對象副本來完成JSON數據填充)

public static void main(String[] args) { UserGroup userGroup = new UserGroup().setName("UserGroup"); User user = new User("User"); for (int i = 0; i < 3; i++) {  User duplicateUser = new User();  BeanUtil.copyProperties(user, duplicateUser);  userGroup.addUser(duplicateUser); } Console.log(JSON.toJSONString(userGroup));}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区深夜视频| 亚洲美女黄色片| 午夜欧美大片免费观看| 亚洲自拍偷拍色片视频| 成人中心免费视频| 色爱av美腿丝袜综合粉嫩av| 中文字幕亚洲第一| 久久乐国产精品| 亚洲精品黄网在线观看| 国产精品精品久久久久久| 国产精品久久久久免费a∨| 成人在线国产精品| 久久久亚洲福利精品午夜| 国产精品96久久久久久又黄又硬| 久久午夜a级毛片| 欧美在线欧美在线| 中文精品99久久国产香蕉| 日韩美女激情视频| 国产亚洲精品久久久久动| 亚洲91精品在线观看| 国产精品久久久久久久av大片| 一区二区三区美女xx视频| 亚洲激情在线观看| 久久国产精品网站| 91久久精品国产91性色| 国产欧美精品一区二区三区-老狼| 久久久久久久成人| 精品免费在线视频| 日韩精品中文字幕久久臀| 在线日韩av观看| 中文国产成人精品| 国产精品女人网站| 国产91色在线|免| 日韩av电影免费观看高清| 91老司机在线| 日韩精品一二三四区| 91高清在线免费观看| 久久伊人免费视频| 亚洲成人性视频| 福利一区福利二区微拍刺激| 欧美孕妇孕交黑巨大网站| 亚洲欧美精品在线| 亚洲欧美日韩视频一区| 久久久999精品| 日韩久久精品成人| 欧美成人免费大片| 久久精品国产91精品亚洲| 欧美在线免费看| 精品高清一区二区三区| 中文字幕亚洲综合久久| 国产在线精品成人一区二区三区| 国产精品入口免费视| 精品久久久久久久久中文字幕| 精品视频www| 日韩电影在线观看永久视频免费网站| 亚洲精品乱码久久久久久金桔影视| 国产精品狠色婷| 亚洲无限av看| 国产亚洲精品91在线| 亚洲欧美三级在线| 日韩欧美在线视频观看| 91精品国产高清久久久久久91| 91精品在线看| 一区二区三区四区视频| 亚洲国产精品国自产拍av秋霞| 国产精品国产三级国产专播精品人| 亚洲欧美中文日韩v在线观看| 日韩中文视频免费在线观看| 欧美乱大交xxxxx另类电影| 国产精品直播网红| 亚洲成人国产精品| 在线亚洲午夜片av大片| 欧美电影免费观看高清| 日本免费一区二区三区视频观看| 亚洲一区中文字幕在线观看| 亚洲成色999久久网站| 一区二区三区四区在线观看视频| 欧美视频一区二区三区…| 欧美日韩在线影院| 国产精品久久久久久久美男| 亚洲男人天堂古典| 国产欧美久久一区二区| 亚洲无限av看| xxxxx91麻豆| 久久久人成影片一区二区三区观看| 国产69精品久久久| 性视频1819p久久| 中文字幕在线看视频国产欧美| 亚洲欧美中文日韩v在线观看| 亚洲第一级黄色片| www日韩欧美| 亚洲一区二区中文| 久久久精品国产网站| 亚洲深夜福利视频| 亚洲男人第一av网站| 中文字幕欧美亚洲| 日韩av中文字幕在线| 欧美精品生活片| 欧美黑人一级爽快片淫片高清| 九色精品免费永久在线| 亚洲欧美日韩一区在线| 欧美午夜精品久久久久久久| 亚洲成年网站在线观看| 91成人精品网站| 亚洲男人天天操| 久久久精品网站| 97精品国产97久久久久久春色| 亚洲欧美中文字幕在线一区| 中文字幕亚洲欧美一区二区三区| 日韩欧美在线观看视频| 欧美一乱一性一交一视频| 日韩精品免费在线视频观看| 国外色69视频在线观看| 91探花福利精品国产自产在线| 亚洲一区二区三区成人在线视频精品| 国产三级精品网站| 亚洲第一网中文字幕| 中文字幕精品—区二区| 国产精品免费一区二区三区都可以| 91欧美激情另类亚洲| 疯狂做受xxxx高潮欧美日本| 免费97视频在线精品国自产拍| 国产精品亚洲精品| 欧美激情极品视频| 在线精品高清中文字幕| 欧美一区三区三区高中清蜜桃| 国产亚洲欧美日韩一区二区| 4388成人网| 人妖精品videosex性欧美| www国产精品com| 国产精品99久久久久久www| 亚洲福利在线视频| 成人av资源在线播放| 欧美区在线播放| 大荫蒂欧美视频另类xxxx| 中文字幕亚洲一区在线观看| 亚洲美女免费精品视频在线观看| 精品国产一区二区三区四区在线观看| 成人精品久久久| 欧美日韩亚洲成人| 91视频九色网站| 91精品中国老女人| 欧美成年人视频| 亚洲最大的成人网| 一夜七次郎国产精品亚洲| 久久激情视频久久| 日韩电影中文字幕| 久久久久中文字幕| 国产精品视频资源| 最近2019中文字幕大全第二页| 亚洲午夜久久久影院| 亚洲精品久久久久久久久久久久| 91av在线免费观看| 中文字幕精品一区二区精品| 色综合色综合久久综合频道88| 国产日韩欧美自拍| 亚洲欧美999| 国产有码在线一区二区视频| 91久久久久久久久| 91国偷自产一区二区三区的观看方式| 欧美精品少妇videofree| 2020久久国产精品| 久久色免费在线视频| 国产一区香蕉久久|