2015-11-02 38 views
1

我已经以下模型:Play2 Scala中的Json定制格式Combinator的

case class Person(name: String, age: Int, job: Option[String]) 

object PersonJsonFormats { 
    implicit val personFormat = Json.format[Person] 
} 

转换一个Person对象转换为JSON(例如用Json.toJson(person))产生以下JSON对象。

{ 
    "name": "John", 
    "age": 10, 
    "job": "gardener" 
} 

我应该改变什么来产生如下的对象?

[ 
    { 
     "name": "name", 
     "value" : "John" 
    }, 
    { 
     "name": "age", 
     "value": 10 
    }, 
    { 
     "name": "job", 
     "value": "gardener" 
    } 
] 

我知道我可以编写自定义ReadsWrites,但我希望写的东西我可以以每case class

回答

2

如果你不想编写自定义读取和写入和想要的东西,你可以适用于每个case class,您可能应该使用宏来实现此目的。

这就是original自动隐式转换器的构建方式。

地方看看:

+0

我有一个快速浏览一下这些文档。我认为这有点超出了我的Scala知识:) – tano