Java Jaxb REST JSON可以知道哪个参数是空的,哪个参数没有发送
我有一个带有REST服务的web应用程序。我有一个带有JAXB注释的bean类:Java Jaxb REST JSON可以知道哪个参数是空的,哪个参数没有发送,java,json,rest,jaxb,Java,Json,Rest,Jaxb,我有一个带有REST服务的web应用程序。我有一个带有JAXB注释的bean类: @XmlRootElement(name = "foo") class Foo { @XmlElement private String bar1; @XmlElement private Double bar2; @XmlElement private Double bar3; } 然后,我使用JSON发送请求: { "foo" : {
@XmlRootElement(name = "foo")
class Foo {
@XmlElement
private String bar1;
@XmlElement
private Double bar2;
@XmlElement
private Double bar3;
}
然后,我使用JSON发送请求:
{
"foo" : {
"bar1" : "1",
"bar3" : ""
}
}
在请求中,我希望:更新值bar1,并将值bar3设置为null
但是,在服务器上,我的class'字段都带有null,我的意思是,bar2为null,因为我没有发送它,bar3也为null,因为我发送的是空的。
问题是:在服务器上,我如何理解哪个参数是为设置null而发送的,哪个参数没有发送,我应该忽略它?使用属性访问字段。
示例
public class Foo
{
private Double bar;
public Double getBar()
{
return bar;
}
public void setBar(Double bar)
{
System.out.println("I am in setter! " + bar);
this.bar = bar;
}
}
现在,如果您要尝试反序列化
{
"bar" : ""
}
{
}
控制台的输出是
I am in setter! null
如果您要尝试反序列化
{
"bar" : ""
}
{
}
然后没有输出到控制台-未访问setter。所以您可以在setter中检查值
@XmlElement
private Double bar3;
public void setBar3(Double bar3)
{
if (bar3 == null)
{
this.bar3 = new Double(-1);
}
this.bar3 = bar3;
}
以下内容可能会有所帮助: