Gson для смешанных значений (логическое, int, String) с карты - PullRequest
0 голосов
/ 19 мая 2019

Я создаю JsonObject из Map<String, String> с Gson:

val params = HashMap<String, String>()
params["confirmation"] = "send"    
JsonParser().parse(Gson().toJson(params)) as JsonObject

Он работает нормально, когда все записи являются строками (следовательно, Map<String, String>).Однако я не могу использовать этот метод для создания Json со смешанным значением, как в следующем примере:

{
  "integer": 1,
  "string": "text",
  "boolean": false
}

Есть ли способ достичь таких результатов без создания моделей и POJO?Я нашел некоторые обходные пути, но я с нетерпением жду элегантного решения, может быть, Map с универсальными (или даже подстановочными) типами ..

1 Ответ

0 голосов
/ 20 мая 2019

Итак, в основном я нашел ответ методом проб и ошибок. Речь шла о расширении параметризованного типа до Any (Object в Java). Вот как это работает:

val params = HashMap<String, Any>()
params["integer"] = 123   
params["string"] = "text"   
params["boolean"] = false    
JsonParser().parse(Gson().toJson(params)) as JsonObject

Этот код приводит к смешанному типу JsonObject следующим образом:

{
  "integer": 123,
  "string": "text",
  "boolean": false
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...