Konlin中的Gson toJson和ArrayList

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Konlin中的Gson toJson和ArrayList相关的知识,希望对你有一定的参考价值。

this问题类似,我想将一个对象(实际上,它是来自改进的API响应)转换为json字符串,因此将它存储在某处会更简单。

响应结构是这样的:

{
  "metadata": {
    "count": 0,
    "type": "string"
  },
  "results": [
    {
      "obj1": {
        "param1": "s1",
        "param2": "s2"
      },
      "obj2": {
        "param3": 0,
        "param4": 0,
        "param5": 0
      },
      "obj3": 0,
      "obj4": "27/12/2017"
    }
  ]
}

使用retrofit2,我将结果数组存储在List<MyResponse.Result>中,这是我传递给Gson().toJson的参数,如下所示:

var contentResponse: String = ""
try{
    this.contentResponse.plus(Gson().toJson(response))
} catch (e: Exception){
    Log.e("Gson error", e.toString())
}

不幸的是,我没有例外,但我的contentResponse一直空着。我试图在上面提到的问题中使用该方法,但得到了相同的结果。有什么建议吗?

PS:如果有更简单的方法来获得String中的改进响应,它也可以提供帮助。

答案

字符串在JVM中是不可变的。调用

this.contentResponse.plus(Gson().toJson(response))

相当于

this.contentResponse + (Gson().toJson(response))

通过这种方式,您可以更好地看到您没有将结果分配给任何内容。将其更改为

this.contentResponse = this.contentResponse.plus(Gson().toJson(response))

以上是关于Konlin中的Gson toJson和ArrayList的主要内容,如果未能解决你的问题,请参考以下文章

gson.toJson() 抛出 ***Error

Gson.toJson返回null,ProGuard问题

来自Json和toJson的Gson用于在Java中返回null的简单对象

Gson toJson(),奇怪的行为(产生空的 json)

Gson toJson 返回 JSON 字符串而不是 JSON 对象

对于基本类型整数,JSONCompareResult不适用于GSON。为什么?