【问题标题】:Gson deserialize Array of Integers in kotlinGson在kotlin中反序列化整数数组
【发布时间】:2019-09-17 10:36:59
【问题描述】:

通常,当我反序列化一个 json-String 时,我会使用这样的东西:

val result = gson.fromJson<myObject>(json, object : TypeToken<myObject>() {}.type)

但现在我想反序列化一个简单的 Int 列表,我无法为此构建一个对象。

json-String 非常简单,看起来像这样:

[1,35,37,255]

我想把它保存到一个列表中,但是

val result = gson.fromJson<List<Int>>(json, object : TypeToken<List<Int>>() {}.type)

不起作用,因为没有对象。我应该如何处理这样一个简单的结构?没有 gson 会不会更好,例如有爆炸?

【问题讨论】:

  • “没有物体”你能说清楚吗?代码是有效的。
  • 我正在使用您的代码获得正确的整数列表。你面临什么问题?
  • 我认为这可能是代码的另一部分存在问题,因为我无法重现该问题。没有对象我的意思是在 JSON 代码中我没有像 {"name":"joe","age":20} 这样的对象,而只有一个没有像 [1,2,4,8] 这样的名称的数组

标签: list kotlin gson json-deserialization


【解决方案1】:

我认为你在 kotlin 中不需要使用 TypeToken 就可以了

     val result = gson.fromJson<List<Int>>(json)

如果你想阅读这里more

【讨论】:

  • 谢谢,但这不起作用(fromJson 因错误无法使用参数调用任何函数) - 我现在使用拆分函数来制作列表
【解决方案2】:
val gson = Gson()
val itemType = object : TypeToken<List<Item>>() {}.type
itemList = gson.fromJson<List<Item>>(itemListJsonString, itemType)

【讨论】:

  • 请记住,Stack Overflow 不仅仅是为了解决眼前的问题,而是为了帮助未来的读者找到类似问题的解决方案,这需要了解底层代码。这对于我们社区的初学者和不熟悉语法的成员来说尤其重要。鉴于此,您能否edit 您的答案包括对您正在做什么的解释以及为什么您认为这是最好的方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-24
相关资源
最近更新 更多