gpt4 book ai didi

android - 为什么在 Kotlin 中将内部对象传递给 Gson().toJson(object) 时 json 字符串为 null?

转载 作者:行者123 更新时间:2023-11-29 14:44:05 28 4
gpt4 key购买 nike

我在 Kotlin 中使用 Gson 将对象转换为 json 字符串。

var json2 可以返回正确的结果,但是var json1 返回null,为什么?

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import bll.SettingManage
import info.dodata.mirror.R
import model.MSetting
import com.google.gson.Gson
import utility.PreferenceTool

class UIMain : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.layout_main)

data class WiFiDefA(val Name:String, val Status: String)

var aWiFiDefA=WiFiDefA("a","b")
var json1=Gson().toJson(aWiFiDefA)

var aWiFiDefB=WiFiDefB("c","d")
var json2=Gson().toJson(aWiFiDefB)

}

data class WiFiDefB(val Name:String, val Status: String)

}

最佳答案

您观察到的是 Gson 的一个已知限制:它不会序列化匿名类或本地类。这就是为什么 Gson 代码明确拒绝序列化你的类 WiFiDefA,在方法 onCreate 中定义(这是 @SangeetSuresh 通过调试 Gson 代码观察到的)。

正如您在 https://github.com/google/gson/issues/298 中看到的那样, 提出了一个问题来改变它并允许序列化匿名和本地类,但是这个问题在一年多前没有明确的原因就被关闭了。

关于android - 为什么在 Kotlin 中将内部对象传递给 Gson().toJson(object) 时 json 字符串为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47342459/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com