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

Gson 有没有办法可以介入反序列化的过程?

  •  
  •   Totato5749 · 2017-04-20 10:59:07 +08:00 · 9537 次点击
    这是一个创建于 2776 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如有个 json:

    { "name":"jack", "birth":1990 }

    一般来说正常的反序列化过程是定义一个 bean ,有 name 与 birth 两个字段,然后使用 Gson 自动反序列化输出对象实例

    然而我现在有一个 bean 有两个字段,分别是 name 和 age

    那么我如何用 Gson 在反序列化的过程中使用我自定义的 bean 并输出对象实例?(也就是自动将 birth 换算成 age )

    12 条回复    2017-04-20 18:01:10 +08:00
    twocity
        1
    twocity  
       2017-04-20 11:11:24 +08:00
    TypeAdapter
    29995270
        2
    29995270  
       2017-04-20 11:44:28 +08:00
    楼上正解
    feeeeeef
        3
    feeeeeef  
       2017-04-20 11:54:52 +08:00
    GSON 解析效率比较低,尽量避开不要用
    XhstormR
        4
    XhstormR  
       2017-04-20 13:03:26 +08:00 via Android
    @feeeeeef 意思是说换个用 fastjson ?
    taowen
        5
    taowen  
       2017-04-20 13:12:48 +08:00
    推荐 jackson
    wadenash1991
        6
    wadenash1991  
       2017-04-20 13:18:49 +08:00
    zzzmode
        8
    zzzmode  
       2017-04-20 13:26:25 +08:00
    用 @SerializedName 的 alternate
    Ervin
        9
    Ervin  
       2017-04-20 16:20:02 +08:00
    8 楼正解
    29995270
        10
    29995270  
       2017-04-20 17:01:25 +08:00
    人家是换算啊,不是换名字啊, 用 @SerializedName 没用
    klesh
        11
    klesh  
       2017-04-20 17:59:01 +08:00 via Android
    这种情形做个 mapping 不是更方便吗?写个中间类型再转换,既简单又通用啊。
    honeycomb
        12
    honeycomb  
       2017-04-20 18:01:10 +08:00 via Android
    @XhstormR
    Jackson 更好
    有评测认为 gson 的性能差一些
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3130 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 13:57 · PVG 21:57 · LAX 05:57 · JFK 08:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.