XML示例:
<Example>
<Object>
<Member1><![CDATA[]]</Member1>
<Member2><![CDATA[someText]]</Member2>
</Object>
</Example>
然后我有POJO类,例如:(带有lombokgetter/setter/toString和jackson注释导入)
@Getter
@Setter
@ToString
@JacksonXMLRootElement(localName = "Example")
public class TXML {
@JacksonXmlProperty(localName = "Object")
private someObject object;
}
@Getter
@Setter
@ToString
public class someObject {
@JacksonXmlProperty(localName = "Member1")
private String member1;
@JacksomXmlProperty(localName = "Member2")
private String member2;
}
然后使用MappingJackson2XmlHttpMessageConverter获取对象映射器,并使用该映射器将XML字符串映射到示例类。
@Autowired ObjectMapper xmlMapper;
@Autowired
private MappingJackson2XmlHttpMessageConverter xmlConverter;
...
xmlMapper = xmlConverter.getObjectMapper();
Example example = xmlMapper.readValue(xmlString, Example.class);
这将产生一个具有以下内容的示例类:
Example
-> object
-> member1 : ""
-> member2 : "someText"
我希望member1为null,而不是空字符串。我怎样才能完成这件事呢?
您需要实现自己的com.fasterxml.jackson.databind.util.converter
,它将在反序列化之后但在设置为必需的形式之前转换您的值。
示例实现:
class CDATAConverter implements Converter<String, String> {
@Override
public String convert(String value) {
return (value == null || value.length() == 0) ? null : value;
}
@Override
public JavaType getInputType(TypeFactory typeFactory) {
return typeFactory.constructType(String.class);
}
@Override
public JavaType getOutputType(TypeFactory typeFactory) {
return typeFactory.constructType(String.class);
}
}
您需要指示jackson
使用它:
@Getter
@Setter
@ToString
class SomeObject {
@JsonDeserialize(converter = CDATAConverter.class)
@JacksonXmlProperty(localName = "Member1")
private String member1;
@JsonDeserialize(converter = CDATAConverter.class)
@JacksonXmlProperty(localName = "Member2")
private String member2;
}
我有基类orderItem并且有子类DeviceItem和ServiceItem。我提供了下面的定义。当我收到这个请求时,我执行dozer映射以将jaxb模型转换为我创建的另一个数据模型。我的数据模型也有相同的OrderItem、DerviceItem和DeviceItem类,它们是POJO。当我进行dozer映射时,类会映射到OrderItem(基类)而不是专门的子类。有没有办法执行此用户doz
我正在运行Elasticsearch版本1.5.2。Logstash版本1.5.4。 大多数logstash设置都是默认的: 我检查了映射“http://localhost:9200/logstash-2015.09.15?pretty”,并且geoip.location映射为double而不是geo_point。 有什么建议如何正确地映射这个? 更多信息:
我正在开发一个使用现有数据库的应用程序,该数据库只能通过存储过程访问。这些SP中的大多数返回来自多个表的列。 我们有一个数据访问层,它从我们的域对象层返回类型的对象。但是,由于SPs返回来自多个表的列,我不确定应该如何构建我的域对象,因为它们中的大多数不会“自然”映射到从SPs返回的数据。 示例:存储过程返回来自“员工”表和“经理”表的列: -员工ID -FirstName -LastName -
我有一个有内部地图的POJO。我想将它从JSON反序列化为HashMap,但Jackson将JSON的内部映射反序列化为LinkedHashMap。我可以通过将映射的类型从“Map”更改为“HashMap”来强制它使用HashMap,但我想知道是否有方法告诉Jackson将反序列化为Map的特定实现? 这里是JSON: 和转换类: 如何使用ObjectMapper:
问题内容: 我有一个对象: 我正在寻找一种本机方法,该方法类似于以下方法: JavaScript是否对对象具有这样的功能?(我想为Node.JS使用它,所以我不在乎跨浏览器的问题。) 问题答案: 该对象没有本地对象,但是如何处理: 但是您可以使用以下命令轻松地遍历对象: 更新资料 很多人提到,以前的方法不会返回新对象,而是对对象本身进行操作。为此,我想添加另一个解决方案,该解决方案返回一个新对象并
问题内容: 我正在使用postgreSQL。我有一列: 但是,当我想插入带有空字符串的行时,如下所示: 它不会给我错误并接受。如何检查插入值应为?(既不为空也不为空) PS: 我的专栏定义为: 问题答案: 向列定义添加约束。例如类似: 有关更多信息,请参见http://www.postgresql.org/docs/current/static/ddl- constraints.html