Gson表示地图中的混合值(布尔值,整数,字符串)

时间:2019-05-19 20:54:27

标签: json kotlin gson

我正在使用JsonObjectMap<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 :(得分:0)

因此,基本上,我通过试错法找到了答案。一切都是为了将​​参数化类型扩展为Any(在Java中为Object)。运作方式如下:

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
}