【问题标题】:Json.NET create schema for dictionaryJson.NET 为字典创建模式
【发布时间】:2016-07-31 05:53:23
【问题描述】:

我有一堂课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": {...}
    ...
}

现在我使用来自NewtonSoftJson.NET 反序列化json,如下所示:

var alphabet = JsonConvert.DeserializeObject<Dictionary<char, Letter>>(jsonString);

所以我可以参考这样的值:alphabet["A"]

现在我要检查,是jsonString,我要反序列化是有效的。

我找到了一些如何从文件中读取JsonSchema 或如何在代码中生成它的示例。但我不知道如何为我的 json 文件示例生成 shema。

谁能帮帮我?

附言

现在我这样做。这是最好的方法吗?

...
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&lt;string, Letter&gt;))
  • @AlekseyL。请写下这个问题的答案,这样我就可以将其作为正确答案进行检查。我认为如果用户不仅用字母符号定义他的 json,那么第一个结论就更正确了

标签: c# json dictionary json.net jsonschema


【解决方案1】:

您可以根据要反序列化的类型生成架构。例如:

var schema = generator.Generate(typeof(Dictionary<string, Letter>))

【讨论】:

  • 我重建了我的 json 文件。我认为,使用:"p1": {"a": [], "b":[], ...} 匹配得更好。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 2023-01-14
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多