首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Jerkson将JSON反序列化为用户定义的案例类

使用Jerkson将JSON反序列化为用户定义的案例类
EN

Stack Overflow用户
提问于 2012-11-14 01:01:04
回答 1查看 3.8K关注 0票数 7

在使用Jerkson在Scala中处理JSON时,我偶然发现了这个优秀的tutorial。特别是,我对将JSON反序列化为用户定义的case类很感兴趣。这篇文章有一个简单的例子

代码语言:javascript
复制
case class Simple(val foo: String, val bar: List[String], val baz: Map[String,Int])

object SimpleExample {
  def main(args: Array[String]) {
    import com.codahale.jerkson.Json._
    val simpleJson = """{"foo":42, "bar":["a","b","c"], "baz":{"x":1,"y":2}}"""
    val simpleObject = parse[Simple](simpleJson)
    println(simpleObject)
  }
}

我在运行它时遇到这个错误,我在Play 2.0.1,Scala 2.9.1-1,Jerkson 0.5.0。

代码语言:javascript
复制
Execution exception [[ParsingException: Unable to find a case accessor

我也在谷歌的群组中找到了this,但它并没有什么帮助。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2012-11-14 14:28:52

不幸的是,我不知道Jerkson,但是Spray Json让这类事情变得很容易。下面的示例来自Spray-Json readme

代码语言:javascript
复制
 case class Color(name: String, red: Int, green: Int, blue: Int)

object MyJsonProtocol extends DefaultJsonProtocol {
  implicit val colorFormat = jsonFormat4(Color)
}

import MyJsonProtocol._

val json = Color("CadetBlue", 95, 158, 160).toJson
val color = json.convertTo[Color]

下面是一个与someone's git repository略有不同的示例

代码语言:javascript
复制
package cc.spray.json.example

import cc.spray.json._


object EnumSex extends Enumeration {
  type Sex = Value
  val MALE = Value("MALE")
  val FEMALE = Value("FEMALE")
}

case class Address(no: String, street: String, city: String)

case class Person(name: String, age: Int, sex: EnumSex.Sex, address: Address)

object SprayJsonExamples {
  def main(args: Array[String]) {
    val json = """{ "no": "A1", "street" : "Main Street", "city" : "Colombo" }"""
    val address = JsonParser(json).fromJson[Address]
    println(address)

    val json2 = """{ "name" : "John", "age" : 26, "sex" : 0 , "address" : { "no": "A1", "street" : "Main Street", "city" : "Colombo" }}"""

    val person = JsonParser(json2).fromJson[Person]
    println(person)
  }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13365186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档