【问题标题】:Gson for mixed values (boolean, int, String) from a Map来自 Map 的混合值(布尔值、整数、字符串)的 Gson
【发布时间】:2019-05-19 20:54:27
【问题描述】:

我正在用Map<String, String>Gson 创建JsonObject

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

当所有条目都是字符串时它工作正常(因此Map&lt;String, String&gt;)。但是,我发现自己无法使用这种方法来创建一个混合值的 Json,比如下面的例子:

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

有没有办法在不创建模型和 POJO 的情况下完成这样的结果?我找到了一些解决方法,但我期待看到一个优雅的解决方案,也许是一个具有通用(甚至通配符)类型的 Map..

【问题讨论】:

  • ... 比如,一个 JsonObject?

标签: json kotlin gson


【解决方案1】:

所以,基本上我通过试错法找到了答案。这一切都是为了将​​参数化类型扩展到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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2014-03-30
    • 2021-08-30
    • 2016-04-24
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多