开发者社区> 问答> 正文

fastjson 2 嵌套结构反序列化结果无法识别嵌套内部的对象属性上的JSONFiled注解的问题

问题描述

嵌套结构反序列化结果无法识别嵌套内部的对象属性上的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

展开
收起
飘飘斯嘉丽 2023-04-21 12:02:14 328 0
1 条回答
写回答
取消 提交回答
  • @Data public class Realtime { @JSONField(name = "ArriveStaName") private String arriveStaName; // 这个地方改成camelCase就好了 }

    原回答者GitHub用户wenshao

    2023-04-21 14:41:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载