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"
}