慕婉清6462132
您可以编写自定义反序列化器并处理这两种情况,或者为ProviderData POJO类编写两个构造函数并正确使用JsonCreator和JsonCreator注释。请参阅以下示例:import com.fasterxml.jackson.annotation.JsonCreator;import com.fasterxml.jackson.annotation.JsonProperty;import com.fasterxml.jackson.databind.ObjectMapper;import java.io.File;public class JsonApp { public static void main(String[] args) throws Exception { File jsonFile = new File("./resource/test.json").getAbsoluteFile(); ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.readValue(jsonFile, Response.class)); }}class Response { @JsonProperty("ProviderData") private ProviderData data; // getters, setters, toString}class ProviderData { private static final String INVALID_NAME = "INVALID"; private static final String TEXT_NAME = "#text"; @JsonProperty(INVALID_NAME) private final String invalid; @JsonProperty(TEXT_NAME) private final String text; @JsonCreator(mode = JsonCreator.Mode.DELEGATING) public ProviderData(String invalid) { this(invalid, null); } @JsonCreator public ProviderData(@JsonProperty(INVALID_NAME) String invalid, @JsonProperty(TEXT_NAME) String text) { this.invalid = invalid; this.text = text; } // getters, toString}对于这个JSON有效载荷:{ "ProviderData": { "INVALID": "HEX", "#text": "Sample" }}以上示例打印:Response{data=ProviderData{invalid='HEX', text='Sample'}}对于String原始JSON有效载荷:{ "ProviderData": "1C"}以上示例打印:Response{data=ProviderData{invalid='1C', text='null'}}如您所见,使用构造函数JSON Object正确映射,使用2-arg构造函数String映射原语1-arg,我们假设此值表示示例中的invalid键JSON Object。