=htp #18389 Fix spray-json unmarshaller utf8 encoding bug

This commit is contained in:
Fehmi Can Saglam 2015-09-03 10:42:22 +03:00
parent f70c8f3fe2
commit 5cfbfc63ea
2 changed files with 3 additions and 3 deletions

View file

@ -23,7 +23,7 @@ trait SprayJsonSupport {
implicit def sprayJsValueUnmarshaller: FromEntityUnmarshaller[JsValue] =
Unmarshaller.byteStringUnmarshaller.forContentTypes(`application/json`).mapWithCharset { (data, charset)
val input =
if (charset == HttpCharsets.`UTF-8`) ParserInput(data.toArray)
if (charset == HttpCharsets.`UTF-8`) ParserInput(data.utf8String)
else ParserInput(data.decodeString(charset.nioCharset.name)) // FIXME: identify charset by instance, not by name!
JsonParser(input)
}

View file

@ -19,11 +19,11 @@ object Employee {
val simple = Employee("Frank", "Smith", 42, 12345, false)
val json = """{"fname":"Frank","name":"Smith","age":42,"id":12345,"boardMember":false}"""
val utf8 = Employee("Fränk", "Smi√", 42, 12345, false)
val utf8 = Employee("Fränk", "Çmi√", 42, 12345, false)
val utf8json =
"""{
| "fname": "Fränk",
| "name": "Smi",
| "name": "Çmi",
| "age": 42,
| "id": 12345,
| "boardMember": false