我为一个我正在读/写为JSON的类编写了自己的play.api.libs.json.Format。
我的目标是建立以下课程:
WallpaperItem(title:String, filename:String, tileSize:Option[String], url:Option[String])
JSON格式化程序如下所示:
val wallpaperItemFormat= new Format[WallpaperItem] {
def writes(data: WallpaperItem): JsValue = {
Json.obj(
"title" -> data.title,
"filename" -> data.filename,
"tileSize" -> data.tileSize,
"url" -> data.url
)}
def reads(json: JsValue): JsResult[WallpaperItem] = {
JsSuccess(new WallpaperItem(
(json \ "title").as[String],
(json \ "filename").as[String],
(json \ "tileSize").as[Option[String]],
(json \ "url").as[Option[String]]
))}
}
调试中的JSON字符串是:
{
"title": "MILANO STRIA",
"filename": "MS21-74.jpg",
"tileSize": 32,
"url": "http://www.koroseal.com/images/designs_large/MS21-74.jpg"
}
答案 0 :(得分:1)
您尝试格式化的json是Int,您尝试将其作为String读取。 你应该做: 将WallpaperItem更改为tileSize:Option [Int] 或者在构造WallpaperItem对象之前将可选的Int转换为Optional String