6

我正在尝试将 a HashMapof 元素转换为 JSON 字符串。我正在使用此链接中使用的方法。

 val elementsNew: HashMap<String, Element> = HashMap(elements)
 val type = Types.newParameterizedType(Map::class.java, String::class.java, Element::class.java)
 var json: String = builder.adapter(type).toJson(elementsNew)

但这给出了以下错误

错误:(236、40)类型推断失败:没有足够的信息来推断有趣适配器中的参数 T(p0:类型!):JsonAdapter!请明确指定。

谁能告诉我错在哪里?是因为 Kotlin 吗?

4

1 回答 1

10

查看adapter()方法的签名,它无法从参数推断其类型参数:

public <T> JsonAdapter<T> adapter(Type type)

因此,您必须明确提供类型:

var json = builder.adapter<Map<String, Element>>(type).toJson(elementsNew)

或者:

val adapter: JsonAdapter<Map<String, Element>> = builder.adapter(type)
var json = adapter.toJson(elementsNew)
于 2017-12-15T11:37:46.287 回答