使用Jackson将JSON反序列化为原始格式的字符串
我有一个用例,我希望JSON按原样转换为字符串,但它失败了,并给我空值,下面是我的POJO:使用Jackson将JSON反序列化为原始格式的字符串,json,jackson,deserialization,json-deserialization,Json,Jackson,Deserialization,Json Deserialization,我有一个用例,我希望JSON按原样转换为字符串,但它失败了,并给我空值,下面是我的POJO: @Data @JsonSnakeCase @JsonIgnoreProperties(ignoreUnknown = true) public class DocumentTemplateRequest { @Enumerated(EnumType.STRING) private TemplateState state; @JsonDeserialize(using = JsonAsStringD
@Data
@JsonSnakeCase
@JsonIgnoreProperties(ignoreUnknown = true)
public class DocumentTemplateRequest {
@Enumerated(EnumType.STRING)
private TemplateState state;
@JsonDeserialize(using = JsonAsStringDeserializer.class)
private String inputSchema;
}
我正在使用的Json作为有效负载:
{
"state": "staging",
"input_schema": {
"title": "Person",
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
}
},
"required": ["firstName", "lastName"]
}
}
我正在使用对象映射器进行映射:
ObjectMapper objectMapper = new ObjectMapper();
DocumentTemplateRequest documentTemplateRequest = null;
try {
documentTemplateRequest = objectMapper.readValue(str, DocumentTemplateRequest.class);
} catch (IOException e) {
e.printStackTrace();
}
这是我的反序列化程序:
public class JsonAsStringDeserializer extends JsonDeserializer<String> {
@Override
public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
TreeNode tree = jsonParser.getCodec().readTree(jsonParser);
return tree.toString();
}
}
为什么inputSchema是空的,我缺少什么?它与属性有关?
你错过了Undercroe。输入模式与输入模式不同
无论您在何处使用相同的属性名称,或者使用jsonproperty注释将其分离。@someguy76,问题是关于Java您应该使用调试器检查
树的值。另外,您如何知道toString{}
会产生所需的结果?也许你应该把树传递给一个ObjectMapper
我已经使用了@JsonSnakeCase注释,它为我完成了这个任务。不知道为什么@JsonSnakeCase在这里不起作用,谢谢:)
state : staging
inputSchema: null