V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhongpingjing
V2EX  ›  Java

问一个 json 反序列化的操作

  •  
  •   zhongpingjing · 2021-09-15 10:19:23 +08:00 · 2597 次点击
    这是一个创建于 1173 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如

    {
        "name": "e1",
        "id": 1,
        "department": {
            "deptName": "d1",
            "deptId": 2
        }
    }
    

    应该怎样才能反序列化成这样的 bean 结构

    public class EmployeeVO {
    
        private Long id;
    
        private String name;
        
        private Long deptId;
    
        private String deptName;
        
    }
    

    这只是举个例子,实际的 json 是有三层,而 bean 只有一层,应该怎么操作才能反序列化正确 项目用的是 jackson,还有 hutool 的 json 工具

    11 条回复    2021-09-16 10:25:17 +08:00
    AoEiuV020
        1
    AoEiuV020  
       2021-09-15 10:32:44 +08:00   ❤️ 1
    只能整个 bean 自定义解析,
    对 jackson 是 StdConverter,
    chendy
        2
    chendy  
       2021-09-15 10:38:31 +08:00   ❤️ 1
    自定义解析规则
    其实直接多写个类然后转过来更简单直观
    zhongpingjing
        3
    zhongpingjing  
    OP
       2021-09-15 10:50:29 +08:00
    多谢各位,已经解决
    shanghai1943
        4
    shanghai1943  
       2021-09-15 12:23:46 +08:00
    @zhongpingjing 咋解决的。分享一下经验,学习一下
    islandempty
        5
    islandempty  
       2021-09-15 13:03:59 +08:00
    department 里的内容封装一个类
    zoharSoul
        6
    zoharSoul  
       2021-09-15 13:19:12 +08:00   ❤️ 3
    @zhongpingjing #3 请分享解决方案, 你希望你查到相同问题的时候, 发现提问的楼主只回复了一句已解决吗?
    lix7
        7
    lix7  
       2021-09-15 17:36:34 +08:00
    INTOX8O
        8
    INTOX8O  
       2021-09-15 17:43:40 +08:00
    @lix7 多谢,刚好我也遇到这个问题了
    zhongpingjing
        9
    zhongpingjing  
    OP
       2021-09-16 09:14:43 +08:00
    @zoharSoul 不是不愿意分享啦,是我发现这个第三方的接口只有少数几个 key 是不在第一层的,所以手动去获取 key-value,然后在 set 到 bean 里面,这个解决方案没有通用性。。
    zhongpingjing
        10
    zhongpingjing  
    OP
       2021-09-16 09:16:30 +08:00
    @shanghai1943 你可以看看 9 楼,通用的解决方案应该就得去自定义反序列化方式
    zoharSoul
        11
    zoharSoul  
       2021-09-16 10:25:17 +08:00
    @zhongpingjing #9 原来如此
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2702 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:09 · PVG 17:09 · LAX 01:09 · JFK 04:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.