Heim >Web-Frontend >js-Tutorial >Informationen zum strengen Verifizierungscode zwischen JSON-String und Entität

Informationen zum strengen Verifizierungscode zwischen JSON-String und Entität

高洛峰
高洛峰Original
2016-12-07 10:56:061285Durchsuche

In einem Projekt muss unbedingt überprüft werden, ob die eingehende JSON-Zeichenfolge mit der definierten Klasse übereinstimmt, andernfalls wird sie nicht aufgezeichnet. Ich bin der Meinung, dass diese strenge Überprüfung viele Informationen erfordert, um sie zu finden. Sie kann von relativ wenigen Personen verwendet werden, daher habe ich sie extrahiert, damit jeder sie analysieren kann, und sie direkt in den Code eingefügt:

mit Newtonsoft.Json;

Erstes Zitat Newtonsoft .Json.Schema

Hauptfunktionsaufruf

private static void Main(string[] args)
{
string Json = @"{
'Email':'58',
'Active':true,
'CreateDate':'2015-12-11 9:24:33'
}";
try
{
/*这里是通过指定的实体创建一个规则来验证传入的json是否符合要求*/
JSchemaGenerator generator = new JSchemaGenerator();
JSchema schema = generator.Generate(typeof(Account));
JObject person = JObject.Parse(Json);
IList<string> messages;
bool valid = person.IsValid(schema, out messages);
if (!valid)
{
foreach (string message in messages)
{
Console.WriteLine(message);
}
}
else
{
Console.WriteLine("OK");
}
}
catch (JsonSerializationException ex)
{
Console.WriteLine(ex.Message);
}
/*
这段代码的也是设置捕获异常的,只是大范围的验证,如果匹配不上则给予默认值。上面的是严格判断
JsonConvert.DeserializeObject<Account>(Json, new JsonSerializerSettings
{
MissingMemberHandling = MissingMemberHandling.Error,
Error = eventHandler
});
*/
Console.Read();
}
public static void eventHandler(object sender, ErrorEventArgs args)
{
var currentError = args.ErrorContext.Error.Message;
Console.WriteLine(currentError);
args.ErrorContext.Handled = true;
}

Entitätsklasse

using System;
public class Account
{
public string Email { get; set; }
public bool Active { get; set; }
public DateTime CreateDate { get; set; }
}

>


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn