java - How to have Jackson use a method to serialize a class to JSON? -


let's have following classes:

public class myclass {     private test t;      public myclass() {         t = new test(50);     } }  public class test {     private int test;      public test(int test) {         this.test = test;     }      public string tocustomstring() {         return test + "." + test;     } } 

when jackson serializes instance of myclass, following:

{"t":{"test":50}}

is there annotation can put in test class force jackson invoke tocustomstring() method whenever serializing test object?

i'd see 1 of following outputs when jackson serializes instance of myclass:

{"t":"50.50"}

{"t":{"test":"50.50"}}

if want produce

{"t":"50.50"} 

you can use @jsonvalue indicates

that results of annotated "getter" method (which means signature must of getters; non-void return type, no args) used single value serialize instance.

@jsonvalue public string tocustomstring() {     return test + "." + test; } 

if want produce

{"t":{"test":"50.50"}} 

you can use custom jsonserializer.

class testserializer extends jsonserializer<integer> {     @override     public void serialize(integer value, jsongenerator jgen, serializerprovider provider) throws ioexception, jsonprocessingexception {         jgen.writestring(value + "." + value);     } } ... @jsonserialize(using = testserializer.class) private int test; 

Popular posts from this blog