杰克逊:避免某些领域的反序列化,但不要忽视它们

pio*_*rek 1 java json jackson

我需要携带所有的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
}
Run Code Online (Sandbox Code Playgroud)

所以现在我希望能够从中反序列化它

{"importantField":7, "notImportantJsonGarbage":{"key1":3, "key2":[1,2,3]}}
Run Code Online (Sandbox Code Playgroud)

然后将其序列化为相同的字符串

UPDATE

我不想忽略这个属性.我需要这些数据.但作为一个字符串,没有完全反序列化的对象

我需要能够做到:

json1 -> object -> json2
json1 == json2
Run Code Online (Sandbox Code Playgroud)

Diy*_*kir 6

看看:JsonProperty.Access

  • AUTO - 访问设置,这意味着可见性规则将用于自动确定此属性的读取和/或写入访问.

  • READ_ONLY - 访问设置,表示只能读取属性以进行序列化,但在
    反序列化期间不会写入(设置).

  • READ_WRITE - 访问设置,这意味着
    无论可见性规则如何,都将访问​​属性以进行序列化(将值写为外部表示)和反序列化(从外部表示中读取值).

  • WRITE_ONLY - 访问设置,这意味着只能为反序列化编写(设置)属性,但序列化时不会读取(获取)属性,也就是说,序列化中不包含该属性的值.

所以在你的情况下你可以像这样使用它:

@JsonProperty(access = Access.READ_ONLY)
private String notImportantJsonGarbage;
Run Code Online (Sandbox Code Playgroud)