案发现场描述

同事调试程序,mybatis embed 嵌套查询,使用 json 转字符串,前端收到的数据带有 $ref ,导致无法按照正常逻辑解析。

解决方式,google啦

汗颜,作为老程序员了,还是祭出终极大招,Google 搜搜。
出现 $ref 原因是,待序列化的对象中存在相同的,json 使用 ref 表示引用之前的。
解决办法,禁止使用ref即可:SerializerFeature.DisableCircularReferenceDetect

代码例子

  1. static class Demo {
  2. private Integer id;
  3. private String name;
  4. private String telephone;
  5. public Demo() {
  6. }
  7. public Demo(Integer id, String name, String telephone) {
  8. this.id = id;
  9. this.name = name;
  10. this.telephone = telephone;
  11. }
  12. public Integer getId() {
  13. return id;
  14. }
  15. public void setId(Integer id) {
  16. this.id = id;
  17. }
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. public String getTelephone() {
  25. return telephone;
  26. }
  27. public void setTelephone(String telephone) {
  28. this.telephone = telephone;
  29. }
  30. }
  31. @Test
  32. public void testJsonRef() {
  33. ArrayList<Demo> demos = new ArrayList<>();
  34. // 给 demos 添加相同元素,ref 出现
  35. Demo demo = new Demo(1, "小辉", "18888888888");
  36. for (int i = 0; i < 5; i++) {
  37. demos.add(demo);
  38. }
  39. System.out.println("输出带有 ref 的json串(给 demos 添加相同元素,ref 出现)");
  40. System.out.println(JSON.toJSONString(demos, true));
  41. System.out.println("处理带有 ref 的json串,然后输出(给 demos 添加相同元素,ref 出现)");
  42. System.out.println(JSON.toJSONString(demos, SerializerFeature.PrettyFormat,
  43. SerializerFeature.DisableCircularReferenceDetect));
  44. // 给 demos 添加不同元素,不会出现 ref
  45. demos = new ArrayList<>();
  46. for (int i = 0; i < 5; i++) {
  47. demos.add(new Demo(1, "小辉", "18888888888"));
  48. }
  49. System.out.println("给 demos 添加不同元素,不会出现 ref");
  50. System.out.println(JSON.toJSONString(demos, true));
  51. }

代码运行结果

  1. D:\devTools\java\jdk1.8.0_261\bin\java.exe -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\devTools\IntelliJ IDEA 2020.1\lib\idea_rt.jar=58360:D:\devTools\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\devTools\IntelliJ IDEA 2020.1\lib\idea_rt.jar;D:\devServer\mvnRep\org\junit\platform\junit-platform-launcher\1.6.2\junit-platform-launcher-1.6.2.jar;D:\devTools\IntelliJ IDEA 2020.1\plugins\junit\lib\junit5-rt.jar;D:\devTools\IntelliJ IDEA 2020.1\plugins\junit\lib\junit-rt.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\charsets.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\deploy.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\access-bridge-64.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\cldrdata.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\dnsns.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\jaccess.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\jfxrt.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\localedata.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\nashorn.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\sunec.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\sunjce_provider.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\sunmscapi.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\sunpkcs11.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\ext\zipfs.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\javaws.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\jce.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\jfr.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\jfxswt.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\jsse.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\management-agent.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\plugin.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\resources.jar;D:\devTools\java\jdk1.8.0_261\jre\lib\rt.jar;D:\project\produce\target\test-classes;D:\project\produce\target\classes;D:\devServer\mvnRep\com\alibaba\nacos\nacos-client\1.4.0\nacos-client-1.4.0.jar;D:\devServer\mvnRep\com\alibaba\nacos\nacos-common\1.4.0\nacos-common-1.4.0.jar;D:\devServer\mvnRep\org\apache\httpcomponents\httpasyncclient\4.1.4\httpasyncclient-4.1.4.jar;D:\devServer\mvnRep\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;D:\devServer\mvnRep\org\apache\httpcomponents\httpcore-nio\4.4.13\httpcore-nio-4.4.13.jar;D:\devServer\mvnRep\org\apache\httpcomponents\httpclient\4.5.12\httpclient-4.5.12.jar;D:\devServer\mvnRep\com\alibaba\nacos\nacos-api\1.4.0\nacos-api-1.4.0.jar;D:\devServer\mvnRep\com\google\guava\guava\24.1.1-jre\guava-24.1.1-jre.jar;D:\devServer\mvnRep\org\checkerframework\checker-compat-qual\2.0.0\checker-compat-qual-2.0.0.jar;D:\devServer\mvnRep\com\google\errorprone\error_prone_annotations\2.1.3\error_prone_annotations-2.1.3.jar;D:\devServer\mvnRep\com\google\j2objc\j2objc-annotations\1.1\j2objc-annotations-1.1.jar;D:\devServer\mvnRep\org\codehaus\mojo\animal-sniffer-annotations\1.14\animal-sniffer-annotations-1.14.jar;D:\devServer\mvnRep\com\fasterxml\jackson\core\jackson-core\2.11.2\jackson-core-2.11.2.jar;D:\devServer\mvnRep\com\fasterxml\jackson\core\jackson-databind\2.11.2\jackson-databind-2.11.2.jar;D:\devServer\mvnRep\io\prometheus\simpleclient\0.5.0\simpleclient-0.5.0.jar;D:\devServer\mvnRep\org\yaml\snakeyaml\1.26\snakeyaml-1.26.jar;D:\devServer\mvnRep\com\alibaba\nacos\nacos-spring-context\1.0.0\nacos-spring-context-1.0.0.jar;D:\devServer\mvnRep\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;D:\devServer\mvnRep\org\springframework\spring-context\5.2.8.RELEASE\spring-context-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\springframework\spring-aop\5.2.8.RELEASE\spring-aop-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\springframework\spring-beans\5.2.8.RELEASE\spring-beans-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\springframework\spring-expression\5.2.8.RELEASE\spring-expression-5.2.8.RELEASE.jar;D:\devServer\mvnRep\com\alibaba\spring\spring-context-support\1.0.11\spring-context-support-1.0.11.jar;D:\devServer\mvnRep\com\alibaba\boot\nacos-config-spring-boot-starter\0.2.7\nacos-config-spring-boot-starter-0.2.7.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-starter\2.3.3.RELEASE\spring-boot-starter-2.3.3.RELEASE.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot\2.3.3.RELEASE\spring-boot-2.3.3.RELEASE.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-starter-logging\2.3.3.RELEASE\spring-boot-starter-logging-2.3.3.RELEASE.jar;D:\devServer\mvnRep\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;D:\devServer\mvnRep\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;D:\devServer\mvnRep\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\devServer\mvnRep\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\devServer\mvnRep\com\alibaba\boot\nacos-config-spring-boot-autoconfigure\0.2.7\nacos-config-spring-boot-autoconfigure-0.2.7.jar;D:\devServer\mvnRep\com\alibaba\boot\nacos-spring-boot-base\0.2.7\nacos-spring-boot-base-0.2.7.jar;D:\devServer\mvnRep\com\alibaba\boot\nacos-discovery-spring-boot-starter\0.2.7\nacos-discovery-spring-boot-starter-0.2.7.jar;D:\devServer\mvnRep\com\alibaba\boot\nacos-discovery-spring-boot-autoconfigure\0.2.7\nacos-discovery-spring-boot-autoconfigure-0.2.7.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-starter-amqp\2.3.3.RELEASE\spring-boot-starter-amqp-2.3.3.RELEASE.jar;D:\devServer\mvnRep\org\springframework\spring-messaging\5.2.8.RELEASE\spring-messaging-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\springframework\amqp\spring-rabbit\2.2.10.RELEASE\spring-rabbit-2.2.10.RELEASE.jar;D:\devServer\mvnRep\com\rabbitmq\amqp-client\5.9.0\amqp-client-5.9.0.jar;D:\devServer\mvnRep\org\springframework\amqp\spring-amqp\2.2.10.RELEASE\spring-amqp-2.2.10.RELEASE.jar;D:\devServer\mvnRep\org\springframework\retry\spring-retry\1.2.5.RELEASE\spring-retry-1.2.5.RELEASE.jar;D:\devServer\mvnRep\org\springframework\spring-tx\5.2.8.RELEASE\spring-tx-5.2.8.RELEASE.jar;D:\devServer\mvnRep\redis\clients\jedis\3.3.0\jedis-3.3.0.jar;D:\devServer\mvnRep\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\devServer\mvnRep\org\apache\commons\commons-pool2\2.8.1\commons-pool2-2.8.1.jar;D:\devServer\mvnRep\org\apache\commons\commons-lang3\3.7\commons-lang3-3.7.jar;D:\devServer\mvnRep\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\devServer\mvnRep\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\devServer\mvnRep\com\alibaba\easyexcel\2.2.6\easyexcel-2.2.6.jar;D:\devServer\mvnRep\org\apache\poi\poi\3.17\poi-3.17.jar;D:\devServer\mvnRep\org\apache\commons\commons-collections4\4.1\commons-collections4-4.1.jar;D:\devServer\mvnRep\org\apache\poi\poi-ooxml\3.17\poi-ooxml-3.17.jar;D:\devServer\mvnRep\com\github\virtuald\curvesapi\1.04\curvesapi-1.04.jar;D:\devServer\mvnRep\org\apache\poi\poi-ooxml-schemas\3.17\poi-ooxml-schemas-3.17.jar;D:\devServer\mvnRep\org\apache\xmlbeans\xmlbeans\2.6.0\xmlbeans-2.6.0.jar;D:\devServer\mvnRep\stax\stax-api\1.0.1\stax-api-1.0.1.jar;D:\devServer\mvnRep\cglib\cglib\3.1\cglib-3.1.jar;D:\devServer\mvnRep\org\ow2\asm\asm\4.2\asm-4.2.jar;D:\devServer\mvnRep\org\ehcache\ehcache\3.8.1\ehcache-3.8.1.jar;D:\devServer\mvnRep\org\glassfish\jaxb\jaxb-runtime\2.3.3\jaxb-runtime-2.3.3.jar;D:\devServer\mvnRep\org\glassfish\jaxb\txw2\2.3.3\txw2-2.3.3.jar;D:\devServer\mvnRep\com\sun\istack\istack-commons-runtime\3.0.11\istack-commons-runtime-3.0.11.jar;D:\devServer\mvnRep\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;D:\devServer\mvnRep\org\aspectj\aspectjweaver\1.9.6\aspectjweaver-1.9.6.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-starter-web\2.3.3.RELEASE\spring-boot-starter-web-2.3.3.RELEASE.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-starter-json\2.3.3.RELEASE\spring-boot-starter-json-2.3.3.RELEASE.jar;D:\devServer\mvnRep\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.2\jackson-datatype-jdk8-2.11.2.jar;D:\devServer\mvnRep\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.2\jackson-datatype-jsr310-2.11.2.jar;D:\devServer\mvnRep\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.2\jackson-module-parameter-names-2.11.2.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-starter-tomcat\2.3.3.RELEASE\spring-boot-starter-tomcat-2.3.3.RELEASE.jar;D:\devServer\mvnRep\org\apache\tomcat\embed\tomcat-embed-core\9.0.37\tomcat-embed-core-9.0.37.jar;D:\devServer\mvnRep\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;D:\devServer\mvnRep\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.37\tomcat-embed-websocket-9.0.37.jar;D:\devServer\mvnRep\org\springframework\spring-web\5.2.8.RELEASE\spring-web-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\springframework\spring-webmvc\5.2.8.RELEASE\spring-webmvc-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-starter-test\2.3.3.RELEASE\spring-boot-starter-test-2.3.3.RELEASE.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-test\2.3.3.RELEASE\spring-boot-test-2.3.3.RELEASE.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-test-autoconfigure\2.3.3.RELEASE\spring-boot-test-autoconfigure-2.3.3.RELEASE.jar;D:\devServer\mvnRep\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;D:\devServer\mvnRep\net\minidev\json-smart\2.3\json-smart-2.3.jar;D:\devServer\mvnRep\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;D:\devServer\mvnRep\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;D:\devServer\mvnRep\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;D:\devServer\mvnRep\org\assertj\assertj-core\3.16.1\assertj-core-3.16.1.jar;D:\devServer\mvnRep\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;D:\devServer\mvnRep\org\junit\jupiter\junit-jupiter\5.6.2\junit-jupiter-5.6.2.jar;D:\devServer\mvnRep\org\junit\jupiter\junit-jupiter-api\5.6.2\junit-jupiter-api-5.6.2.jar;D:\devServer\mvnRep\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar;D:\devServer\mvnRep\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;D:\devServer\mvnRep\org\junit\platform\junit-platform-commons\1.6.2\junit-platform-commons-1.6.2.jar;D:\devServer\mvnRep\org\junit\jupiter\junit-jupiter-params\5.6.2\junit-jupiter-params-5.6.2.jar;D:\devServer\mvnRep\org\junit\jupiter\junit-jupiter-engine\5.6.2\junit-jupiter-engine-5.6.2.jar;D:\devServer\mvnRep\org\junit\platform\junit-platform-engine\1.6.2\junit-platform-engine-1.6.2.jar;D:\devServer\mvnRep\org\mockito\mockito-core\3.3.3\mockito-core-3.3.3.jar;D:\devServer\mvnRep\net\bytebuddy\byte-buddy\1.10.14\byte-buddy-1.10.14.jar;D:\devServer\mvnRep\net\bytebuddy\byte-buddy-agent\1.10.14\byte-buddy-agent-1.10.14.jar;D:\devServer\mvnRep\org\objenesis\objenesis\2.6\objenesis-2.6.jar;D:\devServer\mvnRep\org\mockito\mockito-junit-jupiter\3.3.3\mockito-junit-jupiter-3.3.3.jar;D:\devServer\mvnRep\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;D:\devServer\mvnRep\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\devServer\mvnRep\org\springframework\spring-core\5.2.8.RELEASE\spring-core-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\springframework\spring-jcl\5.2.8.RELEASE\spring-jcl-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\springframework\spring-test\5.2.8.RELEASE\spring-test-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\xmlunit\xmlunit-core\2.7.0\xmlunit-core-2.7.0.jar;D:\devServer\mvnRep\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.1.3\mybatis-spring-boot-starter-2.1.3.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-starter-jdbc\2.3.3.RELEASE\spring-boot-starter-jdbc-2.3.3.RELEASE.jar;D:\devServer\mvnRep\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;D:\devServer\mvnRep\org\springframework\spring-jdbc\5.2.8.RELEASE\spring-jdbc-5.2.8.RELEASE.jar;D:\devServer\mvnRep\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.1.3\mybatis-spring-boot-autoconfigure-2.1.3.jar;D:\devServer\mvnRep\org\mybatis\mybatis\3.5.5\mybatis-3.5.5.jar;D:\devServer\mvnRep\org\mybatis\mybatis-spring\2.0.5\mybatis-spring-2.0.5.jar;D:\devServer\mvnRep\mysql\mysql-connector-java\8.0.21\mysql-connector-java-8.0.21.jar;D:\devServer\mvnRep\com\alibaba\druid-spring-boot-starter\1.1.21\druid-spring-boot-starter-1.1.21.jar;D:\devServer\mvnRep\com\alibaba\druid\1.1.21\druid-1.1.21.jar;D:\devServer\mvnRep\org\springframework\boot\spring-boot-autoconfigure\2.3.3.RELEASE\spring-boot-autoconfigure-2.3.3.RELEASE.jar;D:\devServer\mvnRep\com\github\pagehelper\pagehelper-spring-boot-starter\1.3.0\pagehelper-spring-boot-starter-1.3.0.jar;D:\devServer\mvnRep\com\github\pagehelper\pagehelper-spring-boot-autoconfigure\1.3.0\pagehelper-spring-boot-autoconfigure-1.3.0.jar;D:\devServer\mvnRep\com\github\pagehelper\pagehelper\5.2.0\pagehelper-5.2.0.jar;D:\devServer\mvnRep\com\github\jsqlparser\jsqlparser\3.2\jsqlparser-3.2.jar;D:\devServer\mvnRep\com\alibaba\fastjson\1.2.73\fastjson-1.2.73.jar;D:\devServer\mvnRep\com\pandora\swagger-spring-starter\1.2\swagger-spring-starter-1.2.jar;D:\devServer\mvnRep\io\swagger\swagger-annotations\1.5.21\swagger-annotations-1.5.21.jar;D:\devServer\mvnRep\io\swagger\swagger-models\1.5.21\swagger-models-1.5.21.jar;D:\devServer\mvnRep\com\fasterxml\jackson\core\jackson-annotations\2.11.2\jackson-annotations-2.11.2.jar;D:\devServer\mvnRep\commons-fileupload\commons-fileupload\1.4\commons-fileupload-1.4.jar;D:\devServer\mvnRep\commons-io\commons-io\2.6\commons-io-2.6.jar;D:\devServer\mvnRep\io\springfox\springfox-swagger2\2.9.2\springfox-swagger2-2.9.2.jar;D:\devServer\mvnRep\io\springfox\springfox-spi\2.9.2\springfox-spi-2.9.2.jar;D:\devServer\mvnRep\io\springfox\springfox-core\2.9.2\springfox-core-2.9.2.jar;D:\devServer\mvnRep\io\springfox\springfox-schema\2.9.2\springfox-schema-2.9.2.jar;D:\devServer\mvnRep\io\springfox\springfox-swagger-common\2.9.2\springfox-swagger-common-2.9.2.jar;D:\devServer\mvnRep\io\springfox\springfox-spring-web\2.9.2\springfox-spring-web-2.9.2.jar;D:\devServer\mvnRep\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\devServer\mvnRep\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;D:\devServer\mvnRep\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;D:\devServer\mvnRep\org\mapstruct\mapstruct\1.2.0.Final\mapstruct-1.2.0.Final.jar;D:\devServer\mvnRep\io\springfox\springfox-swagger-ui\2.9.2\springfox-swagger-ui-2.9.2.jar;D:\devServer\mvnRep\com\pandora\minio-spring-starter\1.2.9\minio-spring-starter-1.2.9.jar;D:\devServer\mvnRep\io\minio\minio\7.1.2\minio-7.1.2.jar;D:\devServer\mvnRep\com\carrotsearch\thirdparty\simple-xml-safe\2.7.1\simple-xml-safe-2.7.1.jar;D:\devServer\mvnRep\com\squareup\okhttp3\okhttp\3.14.9\okhttp-3.14.9.jar;D:\devServer\mvnRep\com\squareup\okio\okio\1.17.2\okio-1.17.2.jar;D:\devServer\mvnRep\com\github\spotbugs\spotbugs-annotations\4.0.0\spotbugs-annotations-4.0.0.jar;D:\devServer\mvnRep\net\jcip\jcip-annotations\1.0\jcip-annotations-1.0.jar;D:\devServer\mvnRep\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;D:\devServer\mvnRep\org\hibernate\validator\hibernate-validator\6.1.5.Final\hibernate-validator-6.1.5.Final.jar;D:\devServer\mvnRep\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;D:\devServer\mvnRep\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;D:\devServer\mvnRep\commons-codec\commons-codec\1.4\commons-codec-1.4.jar;D:\devServer\mvnRep\commons-httpclient\commons-httpclient\3.1\commons-httpclient-3.1.jar;D:\devServer\mvnRep\commons-logging\commons-logging\1.0.4\commons-logging-1.0.4.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit5 com.hbte.sharp.TestDemo,testJsonRef
  2. 输出带有 ref json串(给 demos 添加相同元素,ref 出现)
  3. [
  4. {
  5. "id":1,
  6. "name":"小辉",
  7. "telephone":"18888888888"
  8. },
  9. {"$ref":"$[0]"},
  10. {"$ref":"$[0]"},
  11. {"$ref":"$[0]"},
  12. {"$ref":"$[0]"}
  13. ]
  14. 处理带有 ref json串,然后输出(给 demos 添加相同元素,ref 出现)
  15. [
  16. {
  17. "id":1,
  18. "name":"小辉",
  19. "telephone":"18888888888"
  20. },
  21. {
  22. "id":1,
  23. "name":"小辉",
  24. "telephone":"18888888888"
  25. },
  26. {
  27. "id":1,
  28. "name":"小辉",
  29. "telephone":"18888888888"
  30. },
  31. {
  32. "id":1,
  33. "name":"小辉",
  34. "telephone":"18888888888"
  35. },
  36. {
  37. "id":1,
  38. "name":"小辉",
  39. "telephone":"18888888888"
  40. }
  41. ]
  42. demos 添加不同元素,不会出现 ref
  43. [
  44. {
  45. "id":1,
  46. "name":"小辉",
  47. "telephone":"18888888888"
  48. },
  49. {
  50. "id":1,
  51. "name":"小辉",
  52. "telephone":"18888888888"
  53. },
  54. {
  55. "id":1,
  56. "name":"小辉",
  57. "telephone":"18888888888"
  58. },
  59. {
  60. "id":1,
  61. "name":"小辉",
  62. "telephone":"18888888888"
  63. },
  64. {
  65. "id":1,
  66. "name":"小辉",
  67. "telephone":"18888888888"
  68. }
  69. ]
  70. Process finished with exit code 0

小结

只是代码的搬运工,用用而已,可叹,可怜。