【问题标题】:Jerkson JsonProperty not workingJerkson JsonProperty 不工作
【发布时间】:2013-11-19 20:04:57
【问题描述】:

使用 Jerkson 版本:

<dependency>
    <groupId>com.cloudphysics</groupId>
    <artifactId>jerkson_2.10</artifactId>
    <version>0.6.3</version>
</dependency>

我有这个案例类:

case class Parameter(val name:String, val value:String, @(JsonProperty@field)("type") val aType:String, val restriction:String, val defaultValue:String, val required:Boolean, val description:String)

Json 输出包含一个名为“type”的字段。显然这是 Scala 中的一个问题,因为“类型”是一个关键词。虽然看起来支持 JsonProperty 已售出,但这似乎已被破坏。

在测试中我有这个代码:

val p = Parameter("name", "value", "string", "restricted", "myDefault", true, "desc")
println(Json.generate(p))

打印出来:

{"name":"name","value":"value","aType":"string","restriction":"restricted","defaultValue":"myDefault" ,"必需":true,"描述":"desc"}

'aType' 而不是'type'

任何想法我做错了什么?

【问题讨论】:

    标签: json scala jackson jerkson


    【解决方案1】:

    Scala 将允许您使用关键字(和所有内容)来命名事物,如果您将它们放在记号 (`) 中

    case class Parameter( ..., `type`: String,  ....)
    

    这会给你你想要的。


    Jerkson 项目被放弃。

    如果这是带有scala module 的jackson,您的代码会很好,@JsonProperty("type") 也可以完成这项工作。

    【讨论】:

    • 反引号没有帮助。 JSON 反序列化失败
    • 另外,scala 模块还有其他问题,见:github.com/FasterXML/jackson-module-scala/issues/111
    • 哦,对不起,还没有检查反序列化。无论如何,Jerkson 被遗弃了,这就是你的代码不起作用的原因。无论是否接近边缘案例问题,带有 scala 模块的 jackson 都可以工作,就此而言,该库或任何其他库仍然是比 7 个月内未提交提交并且对其过时开放的库更好的选择跨度>
    猜你喜欢
    • 1970-01-01
    • 2014-06-02
    • 2019-04-28
    • 1970-01-01
    • 2021-04-17
    • 2017-10-21
    • 2021-07-23
    • 1970-01-01
    • 2020-05-06
    相关资源
    最近更新 更多