问题描述
嵌套结构反序列化结果无法识别嵌套内部的对象属性上的JSONFiled注解
环境信息
OS信息: Win11 JDK信息: oraclejdk "1.8.0_333" 版本信息:fastjson2 2.0.6 重现步骤
val json =
"[\n"
+ " {\n"
+ " \"DepartureState\" : \"1\",\n"
+ " \"Realtime\" : [\n"
+ " {\n"
+ " \"ArriveStaName\" : \"aaaa\",\n"
+ " }\n"
+ " ]"
+ " }\n"
+ "]";
val result = JSON.parseArray(json, P.class);
Assertions.assertNotNull(result.get(0).getList().get(0));
Assertions.assertNotNull(result.get(0).getList().get(0).getArriveStaName());
@Data public class P { @JSONField(name = "DepartureState") private String departureState; @JSONField(name = "Realtime") private List list; }
@Data public class Realtime { @JSONField(name = "ArriveStaName") private String ArriveStaName; }
期待的正确结果
ArriveStaName不应该为空
相关日志输出
Exception in thread "main" org.opentest4j.AssertionFailedError: expected: not at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:39) at org.junit.jupiter.api.Assertions.fail(Assertions.java:134) at org.junit.jupiter.api.AssertNotNull.failNull(AssertNotNull.java:47) at org.junit.jupiter.api.AssertNotNull.assertNotNull(AssertNotNull.java:36) at org.junit.jupiter.api.AssertNotNull.assertNotNull(AssertNotNull.java:31) at org.junit.jupiter.api.Assertions.assertNotNull(Assertions.java:300) at com.xiaoma.gps.fetch.fastjson.FastJsonTests.main(FastJsonTests.java:24)
原提问者GitHub用户Ive4
@Data public class Realtime { @JSONField(name = "ArriveStaName") private String arriveStaName; // 这个地方改成camelCase就好了 }
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。