【发布时间】:2019-09-19 09:49:20
【问题描述】:
我不知道我是否正确地做到了这一点,但我有以下类来尝试验证和解析 JSON:
public static class JsonHelper
{
internal const string UserResetDataScheme = @"{
'title' : 'UserResetDataModel',
'type' : 'object',
'properties': {
'Role' : {'type' : 'integer'},
'Email' : {'type' : 'string'},
},
required: [ 'Role', 'Email']
}";
internal static T TryParseJson<T>(this string json, string schema) where T : new()
{
var parsedSchema = JSchema.Parse(schema);
var jObject = JObject.Parse(json);
return jObject.IsValid(parsedSchema) ? JsonConvert.DeserializeObject<T>(json) : default(T);
}
}
大多数时候模式检查工作正常,但有时我需要像这样反序列化一个字符串:
"\"用户发送空或空数据\""
在这种情况下,架构验证应该返回 false。但是,当我调用JObject.Parse 时出现错误:
Newtonsoft.Json.JsonReaderException: '从 JsonReader 读取 JObject 时出错。当前 JsonReader 项不是对象:字符串。路径'',
我正在使用上面显示的架构。
如果我理解正确,我无法解析为字符串?但是在这种情况下我该怎么办?如果无法解析,如何验证 JSON 不正确?
(符合此模式的 JSON 解析正确。)
【问题讨论】:
-
您尝试针对架构解析/验证的 JSON 字符串是什么?
-
我写了这一行:--我检查架构工作正常,但有时我需要反序列化字符串,如
"\"User sent null or empty data\"" -
好的,我现在知道发生了什么。我已经添加了答案。
标签: c# json parsing jsonschema