【问题标题】:Default for a missing field when deserializing Json with Jerkson使用 Jerkson 反序列化 Json 时缺少字段的默认值
【发布时间】:2012-06-21 21:27:51
【问题描述】:

按照文档中的示例使用 Jerkson 库解析 Json 时:

case class Person(id: Long, name: String)
parse[Person]("""{"id":1,"name":"Coda"}""") //=> Person(1,"Coda")

如果我尝试反序列化不包含 id 和 name 字段的 Json,则会引发错误,说明需要它们。有没有一种方法可以设置它,以便在解析 Person 的以下 Json 时:

{"id":2}

姓名字段可以默认为“John”。 (我认为这可以通过在案例类的参数中设置默认值来实现,但没有运气)

【问题讨论】:

    标签: json scala jackson


    【解决方案1】:

    查看我为 Jerkson 库所做的 pull request。它增加了对案例类默认参数的支持。

    不过,请注意用户 ksvladimir 的评论,我没有时间将其添加到拉取请求中。 (我会更新这个答案)

    【讨论】:

    • 谢谢,看来你和我有同样的想法:)。我会密切关注拉取请求。同时,对于处理参数可能是可选的时间的策略有什么建议吗?
    • Pleasure :) 您始终可以将自定义 Jerkson 与您的应用程序捆绑在一起,直到它们合并。查看我的分支,应用 ksvladimir 的 mods,sbt package,将 JAR 复制到 lib,并确保从 build.sbt 中删除 Jerkson 依赖项,以便使用 lib 中的依赖项。
    • 抱歉放假了所以才看到这个。谢谢会试一试!
    • 设法得到一些时间来尝试这个。克隆你的 repo 然后构建(使用 maven 作为 sbt 抱怨杰克逊依赖...)。将 jar 放在 lib 中并删除了 jerkson 依赖项。现在它不会编译抱怨:“[error] Parser 所需的类文件丢失。[error] 包 org 的参考值 codehaus 引用不存在的符号。”有任何想法吗?对不起,我在挣扎!它使用 codahale repo 中的 jar 编译。
    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多