不要在JSON响应上发送空值

Van*_*nel 3 rest wcf json web-services

我正在使用WCF开发Rest Web服务.

我有以下合同:

    namespace ADM.Contracts
    {
        [DataContract]
        public class FormContract
        {
            [DataMember]
            public int FormId { get; set; }

            [DataMember]
            public string FormName { get; set; }

            [DataMember]
            public List<BlockContract> blocks { get; set; }
        }

}
Run Code Online (Sandbox Code Playgroud)

有时,块为空,我发送此JSON:

[
    {
        "FormId": 1,
        "FormName": "Formulario 1",
        "blocks": null
    },
    {
        "FormId": 2,
        "FormName": "Formulario 2",
        "blocks": null
    },
    {
        "FormId": 3,
        "FormName": "Formulario 3",
        "blocks": null
    }
]
Run Code Online (Sandbox Code Playgroud)

我可以避免发送"blocks": null吗?

我正在开发一个Android客户端来解析JSON数据.我该怎么处理null

vil*_*der 6

您应该能够null通过添加到DataMember属性来避免发送列表成员的默认值(即).

[DataMember(Name = "blocks", IsRequired=false, EmitDefaultValue=false)]
public List<BlockContract> blocks { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是,请记住,这null是JSON中的有效值,并且应该在可能没有数据附加到您的实体时进行处理.你的javascript可能更容易有一个if条件,如:

for(var i = 0; i < data.length; ++i) {
   if (data[i].blocks != null) {
      //do stuff
   } else {
      //no blocks. do other stuff
   }
}
Run Code Online (Sandbox Code Playgroud)

编辑:我想指出,如果您需要检查有问题的数据成员是否定义了块列表,您很可能必须使用后一个选项来检查块成员是否为空.