我正在使用 Newstonsoft.JSON 来处理从 Internet 获取的 JSON 文件,但这些文件经常更改结构,我不想每天检查它是否没有更改。如何检查结构是否已更改?我不关心数组中的值或元素数量(但我关心子元素的结构)。我怎样才能实现这个目标?
{
"abc": true, // I want to check if there is "abc", but I don't care if it is true or false
"def": 4, // I want to check if there is "def", but I don't care which value it has
[
{
"ghi": false // I want to check if all the children has ghi,but I don't check the value
}
] // I don't care if there is 1 or 1000 elements in array
}
Run Code Online (Sandbox Code Playgroud)
您可以创建一个 JSON 架构并使用JSON.Net根据该架构验证 JSON 文件,如下所示:
JsonSchema schema = JsonSchema.Parse(jsonSchema);
JObject obj = JObject.Parse(jsonString);
bool valid = obj.IsValid(schema);
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想检查收到的 JSON 是否具有相应 DTO 类的所有属性,您可以使用[JsonProperty(Required = Required.Always)]attribute 标记所有属性:
class Person
{
[JsonProperty(Required = Required.Always)]
public string Name { get; set; }
[JsonProperty(Required = Required.Always)]
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果你想检测 JSON 与 DTO 相比是否有一些额外的属性,你可以这样做:
JsonConvert.DeserializeObject<Person>(jsonString, new JsonSerializerSettings
{
MissingMemberHandling = MissingMemberHandling.Error
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1863 次 |
| 最近记录: |