你如何在Json.NET中使用JSON Schema'default'属性?

时间:2011-08-10 13:19:58

标签: json.net default-value jsonschema

如果我有一个JSON Schema,它指定了一个属性的默认值,比如

{
    "type" : "object",
    "properties" : {
        "foo" : { "type" : "string" },
        "bar" : { "type" : "string", "default" : "some text" }
    }
}

...和一个像

这样的JSON字符串
{
    "foo" : "lorem ipsum"
}

...如何反序列化该JSON字符串,以便bar设置为“some text”(默认值)而不是null?

3 个答案:

答案 0 :(得分:12)

在json模式中,“default”属性只是一个元数据(如“title”和“description”)因此,如果没有提供,则不应将其用作值回退(假设您使用反序列化对象)架构)。这就是说,如果我们想要从模式创建一个文档实例,我个人使用这个默认值作为后备来制作一个反序列化器。然而,这不是一般情况。

答案 1 :(得分:6)

我跟踪了Json.NET源代码中的引用,显然解析了默认属性,但没有用于任何东西。所以,我自己的问题的答案是:你不能在当前的Json.NET版本中使用它。

答案 2 :(得分:0)

当移植对象用于许多用途,验证,表单呈现,文档和测试时,架构师决定何时以及如何使用默认值,并且您很可能会使用默认值。如果您正在寻找可以处理重复默认值的额外数据存储和传输成本的预先打包的一种尺寸适合所有解决方案,那么其他模式方法可能具有更好的.NET支持(xml)。

相关问题