Java JAXB 返回 null 而不是空字符串

bluesky1年前 ⋅ 215 阅读

ChatGPT的回答仅作参考:

JAXB 在反序列化 XML 时,如果 XML 元素的值为空字符串,那么默认会将其转换为 null。这是因为 JAXB 认为空字符串和 null 是等价的,因此在反序列化时将其转换为 null 可以方便后续的处理。

如果你希望在反序列化时将空字符串转换为空字符串而不是 null,可以通过设置 JAXB 的 Unmarshaller 的 Property 来实现。具体来说,可以设置 javax.xml.bind.context.factory 属性为 com.sun.xml.internal.bind.v2.ContextFactory,然后设置 com.sun.xml.internal.bind.treatEverythingNillable 属性为 true。

示例代码如下:

```
JAXBContext jaxbContext = JAXBContext.newInstance(MyClass.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setProperty("javax.xml.bind.context.factory", "com.sun.xml.internal.bind.v2.ContextFactory");
unmarshaller.setProperty("com.sun.xml.internal.bind.treatEverythingNillable", true);
MyClass myObject = (MyClass) unmarshaller.unmarshal(xmlFile);
```

这样,在反序列化时,空字符串就会被转换为空字符串而不是 null。

全部评论: 0

    相关推荐