我无法在json.net
api reference或任何地方谷歌那件事。
我想从json模式创建对象,并填入默认值。
基本上是这样的事情:
var JsonSchema=JsonSchema.ReadSchemaFromSomeWhere();
dynamic DefaultObject= JsonSchema.GetDefaultObject();
您可能会在json-schema-defaults包中看到的示例。
示例
var JsonSchema=JsonSchema.ReadSchemaFromString("
{
"title": "Album Options",
"type": "object",
"properties": {
"sort": {
"type": "string",
"default": "id"
},
"per_page": {
"default": 30,
"type": "integer"
}
}");
dynamic DefaultObject= JsonSchema.GetDefaultObject();
//DefaultObject dump is
{
sort: 'id',
per_page: 30
}
更新
我希望json.net中的lib或api在运行时使用任何给定的有效json模式创建具有默认值的对象。
答案 0 :(得分:1)
一个简单的案例可能是这个
[Test]
public void Test()
{
dynamic ob = new JsonObject();
ob["test"] = 3;
Assert.That(ob.test, Is.EqualTo(3));
}
我使用RestSharp
库提供了一个良好的动态实现,允许索引["test"]
;
那么 - 你要做的就是从架构中读取属性并分配值(当然这只适用于简单的案例,但可能是一个开始
dynamic ob = new JsonObject();
foreach (var prop in JsonSchema.Properties)
{
if (prop.Default != null)
ob[prop.Name] = prop.Default
}