有没有一种方法可以通过杰克逊将xml(例如int)序列化为xml属性?我找不到任何特别的杰克逊或json批注(@XmlAttribute @
javax.xml.bind.annotation.XmlAttribute)来实现此目的。
例如
public class Point {
private int x, y, z;
public Point(final int x, final int y, final int z) {
this.x = x;
this.y = y;
this.z = z;
}
@javax.xml.bind.annotation.XmlAttribute
public int getX() {
return x;
}
...
}
我想要的是:
<point x="100" y="100" z="100"/>
但是我得到的是:
<point>
<x>100</x>
<y>100</y>
<z>100</z>
</point>
有没有一种方法来获取属性而不是元素?感谢帮助!
好吧,我找到了解决方案。
如果您使用jackson-dataformat-xml,则无需注册AnnotaionIntrospector
File file = new File("PointTest.xml");
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.writeValue(file, new Point(100, 100, 100));
缺少的TAG是
@JacksonXmlProperty(isAttribute = true)
所以只需将吸气剂更改为:
@JacksonXmlProperty(isAttribute=true)
public int getX() {
return x;
}
而且效果很好。请按照以下步骤操作:
https://github.com/FasterXML/jackson-dataformat-
xml
@JacksonXmlProperty允许为属性指定XML名称空间和本地名称。以及是否将属性写为XML元素或属性。
鉴于这种反应: 我怎样才能将数据属性反序列化为像这样的 MapDTO 我已经尝试使用自定义反序列化器,但是按名称获取所有属性,然后基于这些属性和嵌套对象创建一个新的MapDTO对象看起来很麻烦。如果结构发生变化,我必须更改反序列化器和DTO本身。让Jackson从给定的根开始进行反序列化会更容易。我使用Jackson 2.12.4到ResAs的4.4.0。我想避免创建不必要的包装类。
问题内容: 问题在于,每次执行main方法时,a.xml的旧内容都会丢失,并被新的内容替代。如何在不丢失先前信息的情况下将内容附加到a.xml文件? 问题答案: 样例代码
我需要反序列化以下json: 将它的< code>id属性设置为< code>foo_id json属性。 我需要在自定义反序列化程序中执行此操作。实现这一点最简单的方法是什么? 我想以某种方式将json“转换”为 然后将此委托给杰克逊。 在本例中,对象的类型为Foo,但其他对象可能不属于此类。另外,在本例中,json是一个数字,但如果它也是一个字符串,我希望支持。所以,我需要一种通用的方法来做到
我想反序列化这个xml标记: 转换成一个对象(某个java类)。 我有下一堂课: 我用Jackson XML这样做反序列化: 但是它给了我下一个错误: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: unrecognized field “” (class com.test.SomeXml), 未标记为可忽略(一个
我在尝试“反序列化”对象时遇到以下错误: 我需要能够使用这个XStream库序列化/反序列化对象,甚至是那些没有参数构造函数的对象。
问题内容: 嗨,我需要使用Jackson数据格式XMLMapper从JAVA创建XML。XML应该像 但我总是喜欢使用额外的“ <地址> 问题答案: 试试下面的代码