Java 转换JAXBElement<;字符串>;使用Jackson创建json
有一节课如下-Java 转换JAXBElement<;字符串>;使用Jackson创建json,java,json,spring,jackson,Java,Json,Spring,Jackson,有一节课如下- public class Org{ @XmlElementRef(name = "InstitutionCode", namespace = "http://schemas.tes.org/2004/07/ABC.test", type = JAXBElement.class, required = false) protected JAXBElement<String> institutionCode; } 如何
public class Org{
@XmlElementRef(name = "InstitutionCode", namespace = "http://schemas.tes.org/2004/07/ABC.test", type = JAXBElement.class, required = false)
protected JAXBElement<String> institutionCode;
}
如何将值作为
{"institutionCode":"inst"}
谢谢,您可以为它编写自定义的Jackson序列化程序:
public class OrgSerializer extends JsonSerializer<Org> {
@Override
public void serialize(Org org, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeStartObject();
jgen.writeStringField("institutionCode", org.getInstitutionCode());
jgen.writeEndObject();
}
}
或者,如果您不希望每次都这样做,或者无法更改类,则可以将该类作为参数传递给对象映射器
:
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Org.class, new OrgSerializer());
mapper.registerModule(module);
另一个解决方案可能是使用
@JsonView
,但我自己没有使用过。谢谢Meskobalaz,但是类org是一个生成的类,我无法更改它。有没有其他方法可以应用定制的Jackson Serializer存储大量Meskobalaz。
public class OrgSerializer extends JsonSerializer<Org> {
@Override
public void serialize(Org org, JsonGenerator jgen, SerializerProvider provider)
throws IOException, JsonProcessingException {
jgen.writeStartObject();
jgen.writeStringField("institutionCode", org.getInstitutionCode());
jgen.writeEndObject();
}
}
@JsonSerialize(using = OrgSerializer.class)
public class Org {
// ...
}
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(Org.class, new OrgSerializer());
mapper.registerModule(module);