我有以下 JSON,其中可以是 true 或 false:
{"flag1":<boolean value>, "flag2":<boolean value>}
我尝试使用 Jersey 和以下 JAXB 注释将其绑定(bind)到 Java 类:
@XmlRootElement
public class MyClass {
@XmlElement(name = "flag1", type = Boolean.class)
private Boolean flag1;
@XmlElement(name = "flag2", type = Boolean.class)
private Boolean flag2;
...
}
问题是,当我为“flag1”或“flag2”分配非 boolean 值时(如下例所示),JAXB 会自动为 MyClass 的“flag1”和“flag2”字段分配一个错误值。
{"flag1":"foo", "flag2":"bar"}
有没有办法注释“MyClass”,以便当 JSON 的“flag1”和“flag2”不是 boolean 值时我会得到异常?
最佳答案
看起来 Jersey 只是使用 Boolean.valueOf ,它将除字面上的“true”之外的所有内容都视为 false。由于 JavaScript 没有变量类型的概念,因此这可以说是一种有效的行为。
相比之下,XML 映射基于架构定义,该定义确实具有非常具体的 boolean 值概念。
<小时/>没有使用过 Jersey(或自 1.x 以来的 JAXB),我想知道您是否必须注释实际变量,或者是否可以注释 setter 。或者,也许您可以提供一个接受 String
并解析它的 setter,而不是/以及接受 boolean
的 setter。
关于java - 使用 JAXB 将 JSON 绑定(bind)到 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1261593/