我有一个用例,我希望将JSON转换为字符串,但它失败并给我null,这是我的POJO:
@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();
}
}
,反序列化的结果是:
state : staging
inputSchema: null
为什么inputSchema将变为null,我缺少什么?
答案 0 :(得分:2)
是属性吗? 你错过了强调。 input_schema与inputSchema不同。
在您使用它的任何地方使用相同的属性名称,或者使用jsonproperty注释作为特定属性。