我正在使用 Jackson 1.9.7 从我的 Java 对象生成一些 JSON。
这是我将对象序列化为 JSON 的方法:
public String constructJson(Object object)
throws EvaluationException {
try {
objectMapper.setSerializationConfig(
objectMapper.getSerializationConfig()
.withSerializationInclusion(JsonSerialize.Inclusion.NON_NULL)
.withSerializationInclusion(JsonSerialize.Inclusion.NON_EMPTY)
.with(SerializationConfig.Feature.WRAP_ROOT_VALUE)
);
return objectMapper.writeValueAsString(object);
} catch (IOException e) {
LOGGER.error("Error", e);
throw new EvaluationException("Error", e);
}
}
我正在传递从 XSD 模式生成的 java 对象,但它没有注释@XmlRootElement
。有没有办法告诉杰克逊保留那个物体的名字?
目前它产生的是:
{"": {
"generatedId": "EA7EB141D9454433B5E24F374BF25118",....
虽然它应该是:
{"theNameOfTheRoot": {
"generatedId": "EA7EB141D9454433B5E24F374BF25118",....
我作为根传递给对象映射器的类如下所示:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "EvaluationType", propOrder = {
"generatedId",
"style",
"status",
"candidate",
"texts",
"evaluationParts"
})
public class EvaluationType {
.....
}
所以也许有办法告诉杰克逊从@XmlType
注释中取名字?有谁知道如何解决这个问题?