V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
yazinnnn
V2EX  ›  Kotlin

请教一下 kotlin json 序列化及配合 data class 的正确姿势

  •  
  •   yazinnnn · Aug 6, 2020 · 6912 views
    This topic created in 2092 days ago, the information mentioned may be changed or developed.

    jackson 可以直接 decode jsonString 成 Any 需要自己强转成 jsonObject 或者 jsonArray 可以转成普通 class 实体,不能转成 data class

    Fastjson 情况类似

    网上搜了一下 jackson 需要引入 kotlin module 和大量注解配合才能使用 data class

    请问有啥方便的轮子可以用么?

    12 replies    2021-11-20 19:01:39 +08:00
    sospopo101343793
        1
    sospopo101343793  
       Aug 6, 2020
    使用 gson,暂时没遇到啥问题
    lianyue13
        2
    lianyue13  
       Aug 6, 2020 via Android
    Kotlin serialization 或者 moshi
    wahahaha18
        3
    wahahaha18  
       Aug 6, 2020
    android studio 上有一个 json to kotlin class 的插件,你可以搜一搜类似插件试一试
    whyrookie
        4
    whyrookie  
       Aug 6, 2020
    同一楼,用的 Gson,没啥问题
    chendy
        5
    chendy  
       Aug 6, 2020
    jackson + kotlin module 就完事了,注解都是别的故事了
    ijaysdev
        6
    ijaysdev  
       Aug 6, 2020
    可以用 Gson 或者 Moshi,Jake Wharton 比较推荐使用 Moshi
    KingOfUSA
        7
    KingOfUSA  
       Aug 7, 2020
    compile "com.fasterxml.jackson.module:jackson-module-kotlin"
    lhtdege
        8
    lhtdege  
       Aug 7, 2020
    moshi +1
    moshi 的实现比较优雅一些,速度比 Gson 快,底层使用的是 Okio
    jeremaihloo
        9
    jeremaihloo  
       Aug 7, 2020
    moshi 就是为 Kotlin 而生的
    bluebonnet27
        10
    bluebonnet27  
       Dec 24, 2020
    我用的 GSON,然后 data class 手打的… …
    ZSpirytus
        11
    ZSpirytus  
       Nov 20, 2021 via Android
    可以使用 Gson 。
    如果担心性能问题,可以使用我写的注解处理器 :) https://github.com/zkw012300/GsonBooster
    (后面会迁移到 KSP ,编译速度更快,限制更少)
    ZSpirytus
        12
    ZSpirytus  
       Nov 20, 2021 via Android
    @ZSpirytus 还有就是,gson 配合 data class 的话,需要有无参构造方法(也就是所有的 primary constructor 字段都需要有默认值),否则 gson 会使用 unsafe 来构造一个实例,会导致一些潜在的问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3298 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 04:54 · PVG 12:54 · LAX 21:54 · JFK 00:54
    ♥ Do have faith in what you're doing.