Я не знаю, правильно ли я это сделал или нет, но у меня есть следующий класс для проверки и анализа 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: «Ошибка чтения JObject из JsonReader.Текущий элемент JsonReader не является объектом: String.Path '',
Я использую схему, которую я показал выше.
Если я правильно понимаю, я не могу разобрать строку?Но тогда что мне делать в этом случае?Как проверить правильность JSON, если я не могу его проанализировать?
(JSON, который соответствует этой схеме, правильно анализирует.)