我需要携带所有json数据(存储它们,记录,返回),但我永远不会从代码中访问它们。有没有办法避免反序列化它们但仍然在序列化过程中使用它们?
class MyObject {
int importantField; // i want this field to be properly deserialized
String notImportantJsonGarbage; // i don't care what's here. it must be a valid json
}
所以现在我希望能够从
反序列化它{"importantField":7, "notImportantJsonGarbage":{"key1":3, "key2":[1,2,3]}}
然后将其序列化为相同的字符串
更新
我不想忽略这个属性。我需要这些数据。但作为一个字符串,没有完全反序列化的对象
我需要能够做到:
json1 -> object -> json2
json1 == json2
答案 0 :(得分:5)
AUTO - 访问设置,这意味着可见性规则将用于自动确定读取和/或写入访问权限 这个属性。
READ_ONLY - 访问设置,表示只能读取属性以进行序列化,但不能在执行期间写入(设置) 反序列化。
READ_WRITE - 访问设置,表示将同时访问属性以进行序列化(将值写为 外部表示)和反序列化(从中读取值) 外部表示),无论可见性规则如何。
WRITE_ONLY - 访问设置,表示只能编写(设置)该属性以进行反序列化,但不会被读取 (get)序列化,即属性的值不是 包含在序列化中。
所以在你的情况下,你可以像这样使用它:
@JsonProperty(access = Access.READ_ONLY)
private String notImportantJsonGarbage;
答案 1 :(得分:0)
您可以将类型JSONObject用于Json字段。
Private Sub CheckBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then
ComboBox1.Verb
End If
End Sub
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then
TextBox1.Verb
End If
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 Then
CheckBox1.Verb
End If
End Sub
当你需要阅读它时,你可以将它转换为String(或其他类型)。您可以使用private JSONObject notImportantJsonGarbage;
或jackson
库来实现这一目标。
请注意,当您将gson
转换回JsonObject
时,结果字符串可能会转义报价。
使用JSONObject还可以解决您对“必须是有效的json对象”的要求。
答案 2 :(得分:0)
您可以对要忽略的属性使用注释@JsonIgnore