C# json.net模式无效
我有一个使用JSON消息与客户机通信的web服务,运行时本身不知道数据模型,这就是为什么我使用JSON.net模式来验证来自客户机和服务本身内部的消息,但是这会在性能方面造成大量开销 简化的代码仍然包含足够的上下文来理解我在做什么C# json.net模式无效,c#,json,json.net,jsonschema,C#,Json,Json.net,Jsonschema,我有一个使用JSON消息与客户机通信的web服务,运行时本身不知道数据模型,这就是为什么我使用JSON.net模式来验证来自客户机和服务本身内部的消息,但是这会在性能方面造成大量开销 简化的代码仍然包含足够的上下文来理解我在做什么 public class Template { /// <summary> /// Template known as /// </summary> public string Name { get; priva
public class Template
{
/// <summary>
/// Template known as
/// </summary>
public string Name { get; private set; }
/// <summary>
/// Razor Template
/// </summary>
public string RazorTemplate { get; private set; }
/// <summary>
/// Json Schema definition
/// </summary>
public string Schema { get; private set; }
private JSchema _schema { get; set; }
private JSchema JSchema
{
get
{
if (_schema == null)
_schema = JShema.Parse(Schema);
return _schema;
}
}
private void Validate(JObject obj)
{
// Schema validation Error messages.
IList<string> ValidationError;
// Schema validation.
if (!obj.IsValid(JSchema, out ValidationError))
{
throw new Exception(string.Join(",", ValidationError.ToArray()));
}
}
public string RunTemplate(JObject jobj)
{
// Validate Json Object.
Validate(jobj);
// Code here that access our RazorEngine cache, and add then run Razor Template, or directly run a cached Razor Template...
return "Here we return string generated by RazorEngine to sender.";
}
}
公共类模板
{
///
///模板称为
///
公共字符串名称{get;private set;}
///
///剃刀模板
///
公共字符串RazorTemplate{get;private set;}
///
///Json模式定义
///
公共字符串架构{get;private set;}
私有JSchema_模式{get;set;}
私人JSchema JSchema
{
得到
{
if(_schema==null)
_schema=JShema.Parse(schema);
返回模式;
}
}
私有无效验证(JObject obj)
{
//架构验证错误消息。
IList验证错误;
//模式验证。
如果(!obj.IsValid(JSchema,out ValidationError))
{
抛出新异常(string.Join(“,”,ValidationError.ToArray());
}
}
公共字符串RunTemplate(JObject-jobj)
{
//验证Json对象。
验证(jobj);
//这里的代码访问我们的RazorEngine缓存,添加然后运行Razor模板,或者直接运行缓存的Razor模板。。。
return“在这里,我们将RazorEngine生成的字符串返回给发送方。”;
}
}
假设我运行一个简单的“Hello@Model.Name!”模板来验证json是否具有字符串名称,如果我完全注释掉验证,则速度要慢15-20倍
在Json.Net模式中是否有更有效的方法使用IsValid?请确保更新到NuGet上可用的Json.Net模式的最新版本,使用旧版本验证某些模式时,性能较慢 在Json.NET模式网站上也有关于的文档