如何使用 JSON 架构“默认”? Json.NET 中的属性?
如果我有一个指定属性默认值的 JSON 架构,例如
{
"type" : "object",
"properties" : {
"foo" : { "type" : "string" },
"bar" : { "type" : "string", "default" : "some text" }
}
}
... 和一个 JSON 字符串,例如
{
"foo" : "lorem ipsum"
}
... 我如何反序列化该 JSON 字符串,以便将 bar
设置为“某些文本“(默认值)而不是 null?
If I have a JSON Schema that specifies a default value for a property, like
{
"type" : "object",
"properties" : {
"foo" : { "type" : "string" },
"bar" : { "type" : "string", "default" : "some text" }
}
}
...and a JSON string like
{
"foo" : "lorem ipsum"
}
...how can I deserialize that JSON string so that bar
is set to "some text" (the default value) instead of null?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 json 模式中,“默认”属性只是一个元数据(如“标题”和“描述”),因此如果未提供任何值,则不应将其用作值后备(假设您使用模式反序列化对象) 。也就是说,如果我们想从模式创建文档实例,我个人使用此默认值作为后备创建了一个反序列化器。然而,这并不是一般情况。
In json schemas, the "default" property is only a metadata (as "title" and "description" are) it is therefore not supposed to use it as a value fallback if none is provided (assuming you deserialize an object using a schema). This said, I personally made a deserializer using this default value as a fallback if we want to create an document instance from a schema. It is nevertheless not the general case.
我追踪了 Json.NET 源代码中的引用,默认属性显然已被解析,但没有用于任何用途。所以,我自己的问题的答案是:你不能在当前的 Json.NET 版本中使用它。
I traced the references in the Json.NET source code, and the default attribute is apparently parsed, but not used for anything. So, the answer to my own question is: You can't use it in the current Json.NET version.
当移植对象用于多种用途、验证、表单呈现、文档和测试时,架构师决定何时以及如何利用默认值,并且您很可能会使用默认值。如果您正在寻找一种预先打包的通用解决方案,可以处理重复默认值的额外数据存储和传输成本,那么也许其他模式方法具有更好的 .NET 支持 (xml)。
When porting object for many uses, validation, form rendering, documentation and testing it is the architect's decision on when and how to utilize defaults, and you will most likely make use of defaults. If you are looking for a prepackaged one size fits all solution that can handle the extra data storage and transfer costs of the duplicative defaults, then perhaps other schema methodologies have better .NET support (xml).