2013-11-25 2 views
0

Я хочу, чтобы преобразовать мои вещи:Playframework play.api.libs.json.Json.format реальный случай использования

case class Message (
    var text: String = "", 
    var `type`: String = "error" 
) 

case class ValidationFieldError(
    var fieldName:String, message:Message, 
    var value:String = "", 
    var suggestions:List[String] = List[String]() 
) 

к объекту JSon ...

import play.api.libs.json.{Json, JsValue} 

.. Вот я стараюсь использовать Json.format

implicit val validationFieldErrorFormat = Json.format[Message] 
implicit val validationFieldErrorFormat = Json.format[ValidationFieldError] 

.. когда я Json.toJson(errors) я получаю JSon массив обратно. Это хорошо. Я хочу вернуть объект json. Чтобы вернуть структуру json, выполните следующие действия:

{ 
    "email": { 
     "message": {"type": "error", "text": "email duplication"}, 
     "value": "", 
     "suggestions": [ ] 
     }, 
    "username" : {... etc. } 
} 

Я пытался экспериментировать с ним, но сейчас сдался. Используя StringBuilder, вы получите желаемый json.

Вопрос: Какой бы способ сделать такую ​​структуру/трансформацию.

ответ

0

Вы можете сделать что-то подобное:

Json.obj(
    "email" -> Json.obj(
    "message" -> Json.obj("type" -> "error", "text" -> "email duplication"), // or use Json.toJson(your object)(implicit format) with desired Format 
    "value" -> "", 
    "suggestions" -> Seq() 
), 
    "username" -> Json.obj(...) 
) 
Смежные вопросы