Json Android 中的响应转换 Stuff

Json Response conversion Stuff in Android

下面是模型 class 我是为我的 json 回复创建的:

data class MyModelClass(
        val one: String,
        val two: String,
        val three: String,
        val four: Int,
        val tempCurrentCharge: List<CurrentCharge>,
        val tempCurrentDischarge: List<CurrentDischarge>
)

现在,在上面你可以看到我在我的 Json 响应中得到了 List<CurrentCharge>List<CurrentDischarge> 的数组,如下所示:

"tempCurrentCharge": [
  {
    "temp": -600,
    "cRating": 0
  },
  {
      "temp": 0,
      "cRating": 10
  }
]

现在,我可以成功解析 json 响应并将其保存在我的本地数据库中(根据我的需要)。

现在我的本地数据库中有两个字段 table,一个用于 CurrentCharge,另一个用于 CurrentDischarge

我必须将整个 json 字符串作为值保存在此。 目前它保存为 Object.toString() 相反,我想保存上面共享的整个 json 字符串。

问题是因为我已经为 json 解析创建了 pojo class,它会自动解析 tempCurrentChargetempCurrentDischarge 的数据。

但我想在其中存储 json 字符串的值。 所以,我所做的是:将两个变量的类型更改为 String

但随后它给了我类型转换错误:

"BEGIN_ARRAY... found String".

所以,有人请建议我如何在我的本地房间数据库字段中将 json 数组作为字符串 json 存储?

提前致谢。

让您的数据 class 保持原样,您收到的错误是合理的,因为在响应中您将数据 class 中的类型更改为String 因此出现以下错误

"BEGIN_ARRAY... found String".

根据您的需要,您可以在解析后简单地将其转换回 JSON 并保存。您将需要 Gson 库,我相信它已添加到您的项目中。如果没有请补充。

接下来您需要做的就是这个。我假设你有一个 BatteryConfigurationDetails class

的对象
val batteryConfig = BatteryConfigurationDetails()

val tempCurrentChargeJson = Gson().toJson(batteryConfig.tempCurrentCharge)
val tempCurrentDischargeJson = Gson().toJson(batteryConfig.tempCurrentDischarge)

要将其转换回来,您可以使用以下函数

Gson().fromJson()

如果您还没有库,请添加以下内容

implementation 'com.google.code.gson:gson:2.8.7'