при попытке выполнить мои первые шаги с помощью Scala/Spray у меня возникла проблема с правильной обработкой unicode в спрей-json.Работа с Unicode в Spray-json с переопределением JsonPrinter
Например: á получается \ u00e1 в json. В результате заголовок указывает UTF-8, а также правильную настройку auf -Dfile.encoding = UTF-8, которая показывает UTF-8 в System.properties в Scala.
Я нашел возможное решение here
Но я стыжусь признать, я понятия не имею, как осуществить это, потому что я не адресацию в JsonPrinter непосредственно. Вот что у меня есть:
JsonProtocol:
object PersonJsonProtocol extends DefaultJsonProtocol {
implicit object PersonJsonFormat extends RootJsonFormat[Person] {
def write(per: Person) = JsObject(
"name" -> JsString(per.name),
"surname" -> JsString(per.surname),
"addresses" -> JsArray(per.addresses.toList.map(_.toJson))
)
Простой Mapping в Person Класс:
val simple = {
get[String]("person_code") ~
get[String]("name") ~
get[String]("surname") map {
case person_code~name~surname =>
new Person(person_code, name, surname, adressDao.findAll(person_code))
}
}
DB вызовов в пределах маршрутов:
ctx: RequestContext => ctx.complete(StatusCodes.OK, personDAO.findAll())
Так что мой вопрос будет быть, как я могу переписать метод printString в JsonPrinter. Буду признателен за любую помощь. Заранее спасибо!
Для потомков это актуальная проблема в распылителе, которая должна быть решена https://github.com/spray/spray-json/issues/46. –
@DaveSwartz Спасибо. Таким образом, единственный способ, как представляется, находит безотлагательное обходное решение. – Klink