c# - JSON 模式到 C# 类
问题描述
我是 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
应该是一个“子分数”,它被定义为具有最小和最大限制的数字。
我可以创建一个类似于双/整数的类并且还必须通过特定于类的验证吗?
模式是否只是说exploitabilityScore
并且impactScore
只是需要在我的代码中验证以确保值介于 0 和 10 之间的双/整数?
还是模式只是说exploitabilityScore
并且impactScore
只是双/整数,顺便说一句,数据永远不应该以 0 和 10 之外的值出现(因为验证已经在他们这边完成了,而且def_subscore
更多的是信息)?
解决方案
如果您的架构说prop
是类型,您必须为该属性而不是类number
定义一些数字类型。double/int/float/...
如果您只想检查 JSON 对象是否符合给定的模式,您可以使用一些 json 验证器库来根据模式验证对象。
此外,(或者如果您将 JSON 字符串解析为自定义类),您可以为您的类使用RangeAttribute
class SomeClass {
[Range(1, 10)]
public int SomeValue {get;set;}
}
For other constraints there may be other Annotations. You can even define them yourself like shown here https://stackoverflow.com/a/7256854/3776927
推荐阅读
- google-app-engine - 使用“x-appengine-estimated-cpm-us-dollars”标头估算 Google App Engine API 脚本的成本
- laravel - 在控制器中获取自定义工匠命令的响应
- json - 如何在python中获得双引号的json正文?
- oracle - 我不小心在任务管理器中结束了任务 ORACLE RDBMS
- mysql - 修改列定义时,Mysql Data truncated for column error
- javascript - 如何将自动完成功能应用于 ag-grid 的单元格?
- java - Searchview 清晰专注于隐藏键盘
- java - 计算文本视图中经过的天数
- ios - Ionic Capacitor iOS Firebase 应用程序无法启动
- google-cloud-platform - 谷歌云功能:错误:超出内存限制。函数调用被中断,但它可以工作