代码之家  ›  专栏  ›  技术社区  ›  K.Os

Kotlin使用Gson将json字符串转换为对象列表

  •  16
  • K.Os  · 技术社区  · 8 年前

    Kotlin在编写从JSON字符串到对象列表的转换代码时遇到了问题。

    通常在Java中是这样的:

      Gson gson = new Gson();
        Type type = new TypeToken<List<SomeOjbect>>() {}.getType();
        List<SomeOjbect> measurements = gson.fromJson(json, type);
        return measurements;
    

    然而在科特林,当我这样尝试时:

       val gson = Gson()
        val type: Type = TypeToken<List<SomeOjbect>>{}.type
        val measurements : List<SomeOjbect> = gson.fromJson(text, type)
        return measurements 
    

    IDE Android Studio将TypeToken下划线为错误,表示:

    无法访问“<初始化(>)':它是公共的/ 包裹 /在“TypeToken”中

    并将{}作为错误强调如下:

    类型不匹配。 必修的: 类型 已找到: ()单位

    那么,有没有办法让它对科特林起作用呢?

    2 回复  |  直到 6 年前
        1
  •  32
  •   Charlie Niekirk    6 年前

    您可以尝试这样做:

    val objectList = gson.fromJson(json, Array<SomeObject>::class.java).asList()
    

    编辑[2020年1月14日]:您不应该再使用GSON了。项目维护者之一杰克·沃顿建议使用Moshi、Jackson或kotlinx。序列化。

        2
  •  6
  •   Purushotham    8 年前

    试试这个,它使用对象而不是类型。。

    measurements : List<SomeOjbect> = gson.fromJson(text, object : TypeToken<List<SomeOjbect>>() {}.type)