C# 校验Json格式

错误json:错误值 -2146.379

[{
        "Key": "surface_heights_average",
        "Value": "-2122.739nm",
        "Description": "surface_heights_average"
    }, {
        "Key": "surface_heights_max",
        "Value": "-2105.69nm",
        "Description": "surface_heights_max"
    }, {
        "Key": "surface_heights_min",
        "Value": "-2146.165nm",
        "Description": "surface_heights_min"
    }, {
        "Key": "hole_heights_average",
        "Value": "-2092.042nm",
        "Description": "hole_heights_average"
    }, {
        "Key": "hole_heights_max",
        "Value": "-2075.576nm",
        "Description": "hole_heights_max"
    }, -2146.379, {
        "Key": "hole_depths_average",
        "Value": "-30.697nm",
        "Description": "hole_depths_average"
    }
]

发现 Newtonsoft.Json 不能正常校验出json异常,除非反序列化到具体的实体类,使用Json Schema 可以正常校验异常位置

一、Newtonsoft.Json 反序列化校验

public bool IsValidJson(string jsonString)
{
    try
    {
        var obj = JsonConvert.DeserializeObject(jsonString);
        //var obj = JObject.Parse(jsonString);
        return true;
    }
    catch (JsonReaderException)
    {
        return false;
    }
}

不能正确校验异常

二、Json Schema 校验 

nuget包:NJsonSchema

string json = @"[{
        ""Key"": ""surface_heights_average"",
        ""Value"": ""-2122.739nm"",
        ""Description"": ""surface_heights_average""
    }, {
        ""Key"": ""surface_heights_max"",
        ""Value"": ""-2105.69nm"",
        ""Description"": ""surface_heights_max""
    }, {
        ""Key"": ""surface_heights_min"",
        ""Value"": ""-2146.165nm"",
        ""Description"": ""surface_heights_min""
    }, {
        ""Key"": ""hole_heights_average"",
        ""Value"": ""-2092.042nm"",
        ""Description"": ""hole_heights_average""
    }, {
        ""Key"": ""hole_heights_max"",
        ""Value"": ""-2075.576nm"",
        ""Description"": ""hole_heights_max""
    }, -2146.379, {
        ""Key"": ""hole_depths_average"",
        ""Value"": ""-30.697nm"",
        ""Description"": ""hole_depths_average""
    }
]
";
var schema =  JsonSchema.FromSampleJson(json);
var errors = schema.Validate(json);

foreach (var error in errors)
    Console.WriteLine($"json异常: 行号:{error.LineNumber} 位置:{error.LinePosition}");

 output:

能正常校验json异常 

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值