【发布时间】:2009-08-11 16:47:52
【问题描述】:
我有以下 JSON,可以是真也可以是假:
{"flag1":<boolean value>, "flag2":<boolean value>}
我尝试使用 Jersey 和以下 JAXB 注释将其绑定到 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”时,如下例所示,JAXB 会自动为 MyClass 的“flag1”和“flag2”字段分配一个 false 值。
{"flag1":"foo", "flag2":"bar"}
有没有办法注释“MyClass”,以便当 JSON 的“flag1”和“flag2”不是布尔值时,我会得到一个异常?
【问题讨论】:
-
JAXB 现在支持 JSON 了吗?还是您在使用第三方库?
-
我正在使用泽西岛。 jersey.dev.java.net
-
我认为 Jersey 使用了 JAXB 注释,但有自己的运行时。
-
你能提供一个替代的 getter/setter 吗?
-
不...我之前发布的解决方案(请参阅修订历史记录)不起作用。它只适用于这样的 json:“flag”:“true”,但对于这样的 json 会失败:“flag1”:true(Jersey 抛出了一个解组异常)。我接受了您的回答,因为您找到了注释不起作用的原因。