【playframework】json 形式でデータを返すときにハマったこと
def ticketToJson(list: List[models.Ticket]) = { Json.toJson( Map("tickets" -> Seq( list.map(ticket => { toJson( Map( "id" -> toJson(ticket.id.get), "username" -> toJson(ticket.username), "artist" -> toJson(ticket.artist), "livename" -> toJson(ticket.livename), "rest" -> toJson(ticket.rest), "livedate" -> toJson(ticket.livedate), "isEnd" -> toJson(ticket.isEnd), "registrydate" -> toJson(ticket.registrydate), "place" -> toJson(ticket.place), "comment" -> toJson(ticket.comment), "isPublic" -> toJson(ticket.isPublic), "withFriends" -> toJson(ticket.withFriends) ) ) }) )) ) }
とすると、
{ "tickets": [ [ { "artist": "高垣彩陽", "comment": "", "id": 1, "isEnd": false, "isPublic": false, "livedate": 1366988400000, "livename": "ソロコンサートツアー", "place": "栃木", "registrydate": 1365951600000, "rest": 3, "username": "FScoward", "withFriends": "" }, { "artist": "高垣彩陽", "comment": "", "id": 2, "isEnd": false, "isPublic": true, "livedate": 1368284400000, "livename": "ソロコンサートツアー", "place": "愛知", "registrydate": 1368284400000, "rest": 1, "username": "FScoward", "withFriends": "" } ] ] }
のように返ってきます
一見良さそうに見えますが、よくよく見ると
"tickets" : [
の後に余分に [ が入ってます
ちゃんとお手本通り(http://www.playframework-ja.org/documentation/2.0.2/ScalaJson)にやってるのになんでだろうと考えましたが
たぶん
list.map
もJson形式の出力指定の一部として捉えらたためかと思います
じゃあどうしようと考えて試行錯誤した結果
list.map 直前の Seq を取ってやればうまくいくことがわかりました
def ticketToJson(list: List[models.Ticket]) = { Json.toJson( Map("tickets" -> list.map(ticket => { toJson( Map( "id" -> toJson(ticket.id.get), "username" -> toJson(ticket.username), "artist" -> toJson(ticket.artist), "livename" -> toJson(ticket.livename), "rest" -> toJson(ticket.rest), "livedate" -> toJson(ticket.livedate), "isEnd" -> toJson(ticket.isEnd), "registrydate" -> toJson(ticket.registrydate), "place" -> toJson(ticket.place), "comment" -> toJson(ticket.comment), "isPublic" -> toJson(ticket.isPublic), "withFriends" -> toJson(ticket.withFriends) ) ) }) ) ) }
で、返ってくる結果が
{ "tickets": [ { "artist": "高垣彩陽", "comment": "", "id": 1, "isEnd": false, "isPublic": false, "livedate": 1366988400000, "livename": "ソロコンサートツアー", "place": "栃木", "registrydate": 1365951600000, "rest": 3, "username": "FScoward", "withFriends": "" }, { "artist": "高垣彩陽", "comment": "", "id": 2, "isEnd": false, "isPublic": true, "livedate": 1368284400000, "livename": "ソロコンサートツアー", "place": "愛知", "registrydate": 1368284400000, "rest": 1, "username": "FScoward", "withFriends": "" } ] }
上手くいきました
Scala逆引きレシピ (PROGRAMMER’S RECiPE)
- 作者: 竹添直樹,島本多可子
- 出版社/メーカー: 翔泳社
- 発売日: 2012/07/03
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 54回
- この商品を含むブログ (13件) を見る