相关疑难解决方法(0)

将JAXB生成的类用于需要带有模式的整数的元素

我的XML Schema中有一个元素,定义如下:

<xs:complexType name="MyNumberCodeType">
    <xs:sequence>
        <xs:element name="Code" type="NumberCodeValueType" maxOccurs="unbounded" />
    </xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)

NumberCodeValueType的位置是:

<xs:simpleType name="NumberCodeValueType">
    <xs:restriction base="xs:int">
        <xs:pattern value="[0-7]{7}"/>
    </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

也就是说,我的号码可以从前导0开始.我无法修改此架构.我正在使用JAXB生成我的Java类.不幸的是,Code元素的访问器采用整数列表作为参数,这意味着所有前导0都被剥离(因为,据我所知,当使用整数类型时,无法在Java中保持前导0)!

有什么办法可以解决这个问题吗?

谢谢你的帮助!

java xsd jaxb

13
推荐指数
1
解决办法
1万
查看次数

如何告诉杰克逊将“空”字符串反序列化为空文字?

我有一个Web服务,该服务将“ null”作为任何属性的字符串而不是null文字输出。它几乎针对所有数据类型(字符串或日期)执行此操作。例如,在理想情况下,它会返回

{
    "item" : {
        "title": "Some title",
        "expires": "2014-11-02 00:00:00"
    }
}
Run Code Online (Sandbox Code Playgroud)

但有时它返回:

{
    "item" : {
        "title": "null",
        "expires": "2014-11-02 00:00:00"
    }
}
Run Code Online (Sandbox Code Playgroud)

这会使title属性值为“ null”,而不是将其设置为null。或某个时候:

{
    "item" : {
        "title": "Some title",
        "expires": "null"
    }
}
Run Code Online (Sandbox Code Playgroud)

这使得反序列化失败,因为dateformat不匹配。如何在反序列化期间配置objectmapper或注释模型类以解决这些问题?

我的模型类如下:

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Item {
    public String title;
    @JsonFormat(shape= JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    public Date expires;
}
Run Code Online (Sandbox Code Playgroud)

这是一个Android应用程序,因此我无法控制Web服务。提前致谢

java json jackson deserialization

6
推荐指数
2
解决办法
4749
查看次数

标签 统计

java ×2

deserialization ×1

jackson ×1

jaxb ×1

json ×1

xsd ×1