JSON模式转换为C#类

时间:2018-08-09 16:08:44

标签: c# json class schema

我是JSON的新手,但是我对C#有点了解。我有一个JSON模式,遇到了一个不确定如何将其放入对象类的部分。

"def_subscore": {
    "type": "number",
    "minimum": 0,
    "maximum": 10
},
"def_impact": {
    "type": "object",
    "properties": {
        "baseMetricV3": {
            "type": "object",
            "properties": {
                "cvssV3": {"$ref": "cvss-v3.0.json"},
                "exploitabilityScore": {"$ref": "#/definitions/def_subscore"},
                "impactScore": {"$ref": "#/definitions/def_subscore"}
            }
        }
    }
}

我们可以看到baseMetricV3是一个类对象,并通过其类型和属性进行定义。 exploitabilityScore应该是“ Subscore”,它定义为具有最小和最大限制的数字。

我可以使类的行为类似于double / integer并且必须通过特定于类的验证吗?

该模式是否只是说exploitabilityScoreimpactScore只是double / integers,需要在我的代码中进行验证以确保该值介于0到10之间?

还是该模式只是说exploitabilityScoreimpactScore只是双精度/整数,所以数据绝不能带有0和10以外的值(因为验证已经完成了)在他们的身边,而def_subscore更具参考价值)?

1 个答案:

答案 0 :(得分:0)

如果模式表明propnumber类型,则必须为该属性而不是类定义一些double/int/float/...数字类型。

如果只想检查JSON对象是否符合给定的架构,则可以使用一些json验证程序库针对该架构验证该对象。

此外,(或者,例如,如果您将JSON字符串解析为自定义类,则可以将RangeAttribute用于您的类

class SomeClass {
    [Range(1, 10)]
    public int SomeValue {get;set;}
}

对于其他约束,可能会有其他注释。您甚至可以像在https://stackoverflow.com/a/7256854/3776927

所示的那样自己定义它们