Jaxb 如何区分对象null和moxy未在json中给出的对象 现在我正在做一个使用RESUSTY.In PUT方法的项目,如果客户端发送JSON到服务器。如果JSON中没有对象,我们认为客户端不希望修改对象,否则将被设置为NULL。wo必须修改为null。但是现在我有一个问题,如何区分null对象和moxy在json中没有给出的对象 public class Person{ String id; String name; }
同Jaxb 如何区分对象null和moxy未在json中给出的对象 现在我正在做一个使用RESUSTY.In PUT方法的项目,如果客户端发送JSON到服务器。如果JSON中没有对象,我们认为客户端不希望修改对象,否则将被设置为NULL。wo必须修改为null。但是现在我有一个问题,如何区分null对象和moxy在json中没有给出的对象 public class Person{ String id; String name; },jaxb,moxy,Jaxb,Moxy,同 { "id":"1" } @Blaise Doughan您能帮助我吗默认情况下,不会封送具有空值的映射字段/属性。您可以通过将空值映射为@XmlElementnillable=true来告诉MOXy封送空值。我将在这里详细介绍这一点: 如果您想区分默认的null值和显式设置为null的值,那么您需要跟踪它。一旦跟踪它,就可以使用MOXy的@XmlIsSetNullPolicy对其进行映射 Java模型 导入javax.xml.bind.annotation.xmlement; 导入org
{
"id":"1"
}
@Blaise Doughan您能帮助我吗默认情况下,不会封送具有空值的映射字段/属性。您可以通过将空值映射为@XmlElementnillable=true来告诉MOXy封送空值。我将在这里详细介绍这一点:
如果您想区分默认的null值和显式设置为null的值,那么您需要跟踪它。一旦跟踪它,就可以使用MOXy的@XmlIsSetNullPolicy对其进行映射
Java模型
导入javax.xml.bind.annotation.xmlement;
导入org.eclipse.persistence.oxm.annotations.XmlIsSetNullPolicy;
导入org.eclipse.persistence.oxm.annotations.xml表示;
公共类根{
@XmlElement
私人字符串foo;
@xmlementnillable=true
私人弦杆;
私有字符串baz;
私有布尔集;
@XmlIsSetNullPolicyisSetMethodName=isBazSet,nullRepresentationForXml=XmlMarshallNullRepresentation.XSI_NIL
公共字符串getBaz{
返回baz;
}
公共图书馆{
this.baz=baz;
this.bazSet=true;
}
公共布尔值集{
返回集;
}
}
演示代码
演示
导入java.util.*;
导入javax.xml.bind.JAXBContext;
导入javax.xml.bind.Marshaller;
导入org.eclipse.persistence.jaxb.JAXBContextProperties;
公开课演示{
公共静态无效主字符串[]args引发异常{
映射属性=新的HashMap2;
properties.putJAXBContextProperties.MEDIA_类型,application/json;
properties.putJAXBContextProperties.JSON_INCLUDE_ROOT,false;
JAXBContext jc=JAXBContext.newInstancenew类[]{Root.Class},属性;
Marshaller=jc.createMarshaller;
marshaller.setPropertyMarshaller.JAXB_格式化的_输出,true;
根=新根;
marshaller.marshallroot,System.out;
root.setBaznull;
marshaller.marshallroot,System.out;
}
}
输出
在下面的输出中,我们看到:
福没有被整理好。
酒吧已经整理好了。
baz在未设置时不封送,在设置时封送,即使两次的值都为null。
{
条:空
}
{
bar:null,
baz:null
}
我用你的方法,它可以解决我的问题。但是我有很多事情要做。所以你能告诉我一个常用的方法来解决它。谢谢。
{
"id":"1"
}