我是Json和Gson的初学者,我知道我可以将json映射到一个类中,并通过Gson将一个类映射到json。

“我的Json”是json数据,我尝试设计一个类“My Class”进行映射,但是我认为“My Class”不好。您能给我看一些示例代码吗?谢谢!

我的类(class)

data class Setting (
        val _id: Long,
        val Bluetooth_Stauts: Boolean,
        val WiFi_Name,String
        val WiFi_Statuse: Boolean
)

我的Json
{
   "Setting": [

      {
        "id": "34345",
        "Bluetooth": { "Status": "ON" },
        "WiFi": { "Name": "MyConnect", "Status": "OFF"  }
      }
      ,

      {
         "id": "16454",
         "Bluetooth": { "Status": "OFF" }
      }

   ]

}

更新了

以下是Rivu Chakraborty的观点,它可以很好地工作,但是很复杂,有没有简单的方法?
data class BluetoothDef(val Status:Boolean=false)

data class WiFiDef(val Name:String, val Status:Boolean=false)

data class MDetail (
            val _id: Long,
            val bluetooth: BluetoothDef,
            val wiFi:WiFiDef
)

data class MDetailsList(val mListMetail: MutableList<MDetail>)


        var mBluetoothDef1=BluetoothDef()
        var mWiFiDef1=WiFiDef("MyConnect 1",true)
        var aMDetail1= MDetail(5L,mBluetoothDef1,mWiFiDef1)

        var mBluetoothDef2=BluetoothDef(true)
        var mWiFiDef2=WiFiDef("MyConnect 2")
        var aMDetail2= MDetail(6L,mBluetoothDef2,mWiFiDef2)

        val mListMetail:MutableList<MDetail> = mutableListOf(aMDetail1,aMDetail2)
        var aMDetailsList=MDetailsList(mListMetail)
        val json = Gson().toJson(aMDetailsList)

最佳答案

根据您的JSON结构,我认为下面的类定义应该与Gson一起使用

data class Setting (
        val id: Long,
        val Bluetooth: BluetoothDef,
        val WiFi:WiFiDef
)
data class BluetoothDef(val Status:String)
data class WiFiDef(val Name:String, val Status:String)

说明-
  • 如果要在JSON中获取对象,则应定义一个用于Gson的类。
  • 数据类型应该匹配,如果您获得String"ON"之类的字符串,请使用"OFF"。如果要获取Booleantrue(不带引号),则可以使用false
  • 除非您使用@SerializedName定义JSON变量名称,同时使用其他变量/属性名称,否则JSON元素名称应与变量/属性名称匹配。

  • *注意如果需要,可以重命名类

    我认为对您有帮助

    10-07 19:09
    查看更多