【发布时间】:2020-11-04 17:58:26
【问题描述】:
所以我使用下面的代码来排除已经序列化的特定字段再次序列化,所以我使用了Gson 中的ExclusionStrategy 来做到这一点。但是现在在没有特定字段的情况下对对象进行序列化后,我该如何将该字段添加回serialized object
这里是exclusion strategy的代码:
val gson = GsonBuilder().addSerializationExclusionStrategy(object :
ExclusionStrategy {
override fun shouldSkipField(f: FieldAttributes?): Boolean {
return f?.name?.toLowerCase()?.contains("subdata")!!//the field to be skipped
}
override fun shouldSkipClass(clazz: Class<*>?): Boolean {
return false
}
}).create()
所以这个对象(数据)包含上面提到的字段subdata,但是在序列化过程中,我将subdata字段取出,因为它已经是serialized。
val serializedData = gson.toJson(Data)
println("serializedData -> $serializedData")
当我打印 serializedData 时,它仍然不包括 subData。
我的问题是,在Data 变成serialized 之后,有没有办法将我上面忽略的subdata 放回serializedData?
我们将不胜感激任何帮助或建议。
【问题讨论】:
-
“已经序列化”是什么意思?除非您使用 ExclusionStrategy,否则 Gson 通常会为您发出两次相同的字段吗?还是您的意思是
subdata已经是JSON 数据,您想阻止Gson 将其编码为JSON 字符串? -
@Marcono1234 子数据已经是 JSON 数据,因为我在该数据上使用了
Gson().toJson(subData)。所以我想阻止 Gson 再次将其编码为 JSON 字符串,因为这样我得到了它的转义数据,并且我不希望它再次被编码。
标签: android kotlin serialization gson