Jackson JSON Processorを使用してカスタムフィールドレベルのシリアル化を行う方法はありますか?たとえば、クラス
public class Person {
public String name;
public int age;
public int favoriteNumber;
}
次の JSON にシリアル化されます。
{ "name": "Joe", "age": 25, "favoriteNumber": "123" }
age=25は次のようにエンコードされていることに注意してください。番号favoriteNumber=123は次のようにエンコードされます弦. Jackson はすぐにint
数値に変換されます。この場合、favoriteNumber を文字列としてエンコードします。
ベストアンサー1
カスタム シリアライザーは次のように実装できます。
import com.fasterxml.jackson.databind.JsonSerializer
import com.fasterxml.jackson.databind.SerializerProvider
import com.fasterxml.jackson.core.JsonGenerator
public class Person {
public String name;
public int age;
@JsonSerialize(using = IntToStringSerializer.class, as=String.class)
public int favoriteNumber:
}
public class IntToStringSerializer extends JsonSerializer<Integer> {
@Override
public void serialize(Integer tmpInt,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider)
throws IOException, JsonProcessingException {
jsonGenerator.writeObject(tmpInt.toString());
}
}
int
Java は からへのオートボクシングを処理する必要がありますInteger
。