Иногда клиент отправляет запрос Json-RPC со значением Json в виде символов Unicorde.Пример:
{ "jsonrpc": "2.0", "method": "add", "params": { "fields": [ { "id": 1, "val": "\u0414\u0435\u043d\u0438\u0441" }, { "id": 2, "val": "\u041c\u043e\u044f" } ] }, "id": "564b0f7d-868a-4ff0-9703-17e4f768699d" }
Как мне обработать Json-RPC-запрос:
- Мой сервер получает запрос типа
byte[]
; - Преобразование его в
io.vertx.core.json.JsonObject
; - Сделайте некоторые манипуляции;
- Сохраните в БД;
И я нашел в записях БД:
"val": "\u0414\u0435\u043d\u0438\u0441"
Ихудшее в этой истории.Если клиент попытается найти эти данные, он получит:
"val": "\\u0414\\u0435\\u043d\\u0438\\u0441"
Так что я думаю, что мне нужно преобразовать данные запроса перед десериализацией в JsonObject.Я пытался, и это не помогло:
String json = new String(incomingJsonBytes, StandardCharsets.UTF_8);
return json.getBytes(StandardCharsets.UTF_8);
Также я пытался использовать StandardCharsets.US_ASCII
.
Примечание: Вариант с StringEscapeUtils.unescapeJava()
Не могу, потому что в нем убираются все необходимые и ненужные '\' символов.
Если кто-нибудь знает, как это решить?Или библиотека, которая уже делает это?Большое спасибо.