Annotation @JacksonInject của Jackson dùng để inject giá trị vào object đã parse thay vì đọc từ JSON. Để inject giá trị vào field, dùng class InjectableValues và cấu hình ObjectMapper đọc cả giá trị inject từ InjectableValues và các giá trị còn lại từ JSON string.
Cú pháp
@Target(value={ANNOTATION_TYPE,METHOD,FIELD,PARAMETER}) @Retention(value=RUNTIME) public @interface JacksonInject
Ví dụ
import com.fasterxml.jackson.annotation.*; import com.fasterxml.jackson.databind.*; import java.io.*; public class JacksonInjectTest { public static void main(String args[]) throws IOException { String jsonString = "{\"empName\": \"Raja Ramesh\"}"; InjectableValues injectableValues = new InjectableValues.Std().addValue(int.class, 110); Employee emp = new ObjectMapper().reader(injectableValues).forType(Employee.class).readValue(jsonString); System.out.println(emp); } } // Employee class class Employee { @JacksonInject public int empId = 0; public String empName = "Adithya"; @Override public String toString() { return "Employee{" + "empId=" + empId + ", empName='" + empName + '\'' + '}'; } }
Kết quả
Employee{empId=110, empName='Raja Ramesh'}