Json.NET 为字典创建架构
Json.NET create schema for dictionary
我有一个 class Letter
:
public class Letter
{
public string p1 {get; set;}
public string p2 {get; set;}
public List<string> l1 {get; set;}
public List<string> l2 {get; set;}
}
我有 json 个文件:
{
"A":
{
"p1": "",
"p2": "",
"l1": ["", "", ..., ""],
"l2": ["", "", ..., ""]
}
"B": {...}
...
}
现在我用 Json.NET
从 NewtonSoft
反序列化 json 像这样:
var alphabet = JsonConvert.DeserializeObject<Dictionary<char, Letter>>(jsonString);
所以我可以参考这样的值:alphabet["A"]
现在我想检查一下,我想反序列化的 jsonString
是否有效。
我找到了一些示例如何从文件中读取 JsonSchema
,或者如何在代码中生成它。但是我找不到如何为我的 json 文件示例生成 shema。
谁能帮帮我?
P.S.
现在我是这样做的。这是最好的方法吗?
...
var schemaGenerator = new JSchemaGenerator();
var schemaForLetter = schemaGenerator.Generate(typeof (Letter));
var schema = new JSchema
{
Type = JSchemaType.Object,
Properties =
{
{ "A", schemaForLetter },
{ "B", schemaForLetter },
...
}
}
...
您可以从反序列化到的类型生成架构。例如:
var schema = generator.Generate(typeof(Dictionary<string, Letter>))
我有一个 class Letter
:
public class Letter
{
public string p1 {get; set;}
public string p2 {get; set;}
public List<string> l1 {get; set;}
public List<string> l2 {get; set;}
}
我有 json 个文件:
{
"A":
{
"p1": "",
"p2": "",
"l1": ["", "", ..., ""],
"l2": ["", "", ..., ""]
}
"B": {...}
...
}
现在我用 Json.NET
从 NewtonSoft
反序列化 json 像这样:
var alphabet = JsonConvert.DeserializeObject<Dictionary<char, Letter>>(jsonString);
所以我可以参考这样的值:alphabet["A"]
现在我想检查一下,我想反序列化的 jsonString
是否有效。
我找到了一些示例如何从文件中读取 JsonSchema
,或者如何在代码中生成它。但是我找不到如何为我的 json 文件示例生成 shema。
谁能帮帮我?
P.S.
现在我是这样做的。这是最好的方法吗?
...
var schemaGenerator = new JSchemaGenerator();
var schemaForLetter = schemaGenerator.Generate(typeof (Letter));
var schema = new JSchema
{
Type = JSchemaType.Object,
Properties =
{
{ "A", schemaForLetter },
{ "B", schemaForLetter },
...
}
}
...
您可以从反序列化到的类型生成架构。例如:
var schema = generator.Generate(typeof(Dictionary<string, Letter>))