代码之家  ›  专栏  ›  技术社区  ›  toadfromgrove

C类的JSON模式

  •  0
  • toadfromgrove  · 技术社区  · 6 年前

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

    "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 应该是一个“子核”,它被定义为一个具有最小和最大限制的数字。

    我可以创建一个类似于double/integer的类,并且还必须通过特定于类的验证吗?

    模式只是说 可开发性核心 impactScore 只是double/integer需要在我的代码中验证以确保值在0到10之间吗?

    或者这个模式只是说 可开发性核心 冲击评分 只是两个/整数,顺便说一下,数据不应该包含0和10以外的值(因为验证已经在它们的一侧完成了,并且 def_subscore 更多的是信息?

    1 回复  |  直到 6 年前
        1
  •  0
  •   derpirscher    6 年前

    如果你的计划说 prop 属于类型 number 你必须定义一些 double/int/float/... 该属性而不是类的数值类型。

    如果只想检查JSON对象是否符合给定的模式,可以使用一些JSON验证器库根据模式验证该对象。

    另外,(或者如果您将JSON字符串解析为自定义类),您可以使用 RangeAttribute 为你的班级

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

    对于其他约束,可能还有其他注释。你甚至可以自己定义它们就像这里所示 https://stackoverflow.com/a/7256854/3776927