描述了对 JSON 数据中使用的 null 和空数组及对象的处理。
JSON 数据具有 null 和空数组及对象的概念。此部分说明其中每个概念如何映射到 null 和未设置的数据对象概念。
Null 值
JSON 具有特殊值 null,可以对任何数据类型设置该值,包括数组、对象、数字和布尔类型。
34 { Schema types
35 "id":null, (integer)
36 "firstName": null, (string)
37 "address": null, (Address complex type with maxOccurs = 1)
38 "homeAddresses":null (Address complex type with maxOccurs > 1)
39 "phoneNumbers": null (string with maxOccurs > 1)
40 }
考虑上一个示例,其中具有 null 值的 JSON 数据被解析为数据对象,以下情况成立:
- id - 如果在该模式中将该属性定义为可空,那么它将设置为 null。如果该属性未定义为可空,那么它将抛出异常。
- firstName - 在该属性上设置 null 值。
- address - 如果在该模式中将该属性定义为可空,那么它将设置为 null。如果该属性未定义为可空,那么它将抛出异常。
- homeAddresses - 模式不允许该属性可空,因此未设置该属性。
- phoneNumbers - 必须在该模式中将该属性定义为可空,否则它将抛出异常。
当序列化为 JSON 时,如果数据对象中的属性值为 null,那么它将序列化为 JSON null。
未设置属性
JSON 数据中不存在的属性映射到数据对象空间中的未设置属性。 如果数据对象中的属性未进行设置(未设置),那么该属性将不会出现在 JSON 数据中。
空属性
JSON 空概念适用于数组和对象,如下所示。
41 {
42 "address":{}
43 "homeAddresses":[]
44 "phoneNumbers":[]
45 }
如果是地址,那么会创建空地址数据对象。数据对象不具有空列表的概念。因此,针对这两个属性,不会对数据对象采取任何操作。