当我在Kotlin中使用Gson时如何为json设计一个类?

时间:2017-11-16 02:56:37

标签: json kotlin gson

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

"我的Json"是一个json数据,我尝试设计一个类" My 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)

1 个答案:

答案 0 :(得分:2)

根据你的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
  • JSON元素名称应与变量/属性名称匹配,除非您在使用不同的变量/属性名称时使用@SerializedName定义JSON变量名称。

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

我认为它会对你有所帮助