【问题标题】:Parse json string into scala case class in java将json字符串解析为java中的scala案例类
【发布时间】:2014-11-24 06:51:40
【问题描述】:

我有一个小型 spring(mvc) Web 应用程序。此应用程序依赖于一个具有case class MessageCommand 的 scala 模块。我想使用Jackson 将 JSON 字符串转换为 MessageCommand Case 类。

这可能吗?

我正在使用 Spring 4、Jackson-asl 1.9、Scala 2.11 案例类。

【问题讨论】:

    标签: java scala spring-mvc jackson case-class


    【解决方案1】:

    嗯,你可以。但是你需要在案例类中调整一些东西:

    case class Message(@BeanProperty var num:Int, @BeanProperty var name:String){
        def this() = this(-1,null)
    }
    
    import org.codehaus.jackson.map.ObjectMapper
    import scala.beans.BeanProperty
    
    val mapper = new ObjectMapper
    val json = """{"num":1,"name":"Di Caprio"}"""
    
    scala> val user = mapper.readValue(json, classOf[Message])
    user: Message = Message(1,Di Caprio)
    

    如果你不能调整案例类,那么它会变得有点困难和不整洁

    【讨论】:

    • 如果我不能编辑 scala 类怎么办?是否需要编写一个简单的java类,然后手动将java类中的值设置到case类中?
    • 我用谷歌搜索发现:github.com/mesosphere/jackson-case-class-module 不确定它有多好。
    • 我必须在 Java 中做到这一点,而不是 scala。我的意思是我需要在 java 中解析一个字符串并转换为 Scala Case 类
    • 我应用了您提供的答案并更改了 scala 代码。这工作正常。
    • 如果你是用 Java 做的。事情还是一样:ObjectMapper m = new ObjectMapper(); m.readValue(json, Message.class) :)
    猜你喜欢
    • 1970-01-01
    • 2014-06-25
    • 2019-01-18
    • 1970-01-01
    • 2011-11-23
    • 2021-09-10
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    相关资源
    最近更新 更多