1

я занимаюсь разработкой приложений с использованием фреймворка игры в Скале я хочу ответ в формате JSON, но как это сделать во время компиляции ошибка приходит буферJSON Deserialize из ListBuffer [(String, String)] в рамках игры

No Json deserializer found for type List[(String, String)]. Try to implement an implicit Writes or Format for this type. 

Список является

ListBuffer((This,a choke), (a Cv,15.6 gal)) 

я также сделал это

Json.toJson(list)) 

, но по-прежнему получаю сообщение об ошибке.

любой, кто-нибудь дает мне некоторое представление, чтобы решить эту проблему.

ответ

3

Какое json-представление (String, String) вы ожидаете? Если это что-то вроде этого:

yourListName : { 
    "1" : "2", 
    "3" : "4" 
} 

, то вы могли бы просто использовать Json.toJson(list.toMap). В противном случае, вы должны определить Writes для (String, String) как это:

implicit val writer = new Writes[(String, String)] { 
    def writes(c: (String, String)): JsValue = { 
     Json.obj("something" -> c._1 + ", " + c._2) 
     //or like this: 
     //Json.obj(c._1 -> c._2) 
    } 
    } 

Убедитесь, что этот писатель в рамках

+0

вы можете, пожалуйста, помогите мне для этого также 'No Json deserializer найден для типа Map [String, Any]. Попробуйте реализовать неявные Writes или Format для этого типа. « « Карта (предложение2 -> Карта («UOM» -> Список (Карта (Это -> дроссель Cv, равный 15,6 гал/мин psi½), Карта (Это -> 15,6 галлонов/мин psi½), Карта (Это -> 120 бара,), Карта (Это -> 110 галлонов/мин psi½), Карта (Это -> 120 бара.), Карта (дроссель Cv -> дроссель Cv равен 15,6 галлонов/мин psi½), Карта (дроссель Cv -> 15,6 гал/мин фунт/кв.дюйм), ' для данных такого типа –

0

Как обсуждалось в этой теме [2.1] Json.format macros and Tuple2 плей-JSON 2,1 не поддерживает кортежи еще главным образом потому, json не поддерживает кортежи. Если вы хотите, чтобы ваши кортежи быть writtern как массив можно использовать неявный формат для кортежей:

implicit def tuple2Writes[A, B](implicit aWrites: Writes[A], bWrites: Writes[B]): Writes[Tuple2[A, B]] = new Writes[Tuple2[A, B]] { 
    def writes(tuple: Tuple2[A, B]) = JsArray(Seq(aWrites.writes(tuple._1), bWrites.writes(tuple._2))) 
} 
0

Вы можете сделать это в строке, просто объявить это неявное:

implicit def tuple2[A : Writes, B : Writes] = Writes[(A, B)] (t => Json.obj("something1" -> t._1, "something1" -> t._2)) 
Смежные вопросы