во время своих первых шагов со Scala/Spray я столкнулся с проблемой правильной обработки юникода в spray-json.
Например: á приводит к á в json. Результирующий заголовок указывает UTF-8, а также правильную настройку auf -Dfile.encoding=UTF-8, которая показывает UTF-8 в System.properties в Scala.
Я нашел возможное решение здесь
Но мне стыдно признаться, что я понятия не имею, как это реализовать, потому что я не обращаюсь к JsonPrinter напрямую. Вот что у меня есть:
JsonПротокол:
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))
)
Простое сопоставление в классе людей:
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))
}
}
Вызов БД по маршрутам:
ctx: RequestContext => ctx.complete(StatusCodes.OK, personDAO.findAll())
Итак, мой вопрос: как я могу перезаписать метод printString в JsonPrinter. Буду признателен за любую помощь. Заранее спасибо!