验证远程JSON而不是解析它

时间:2013-03-16 02:21:35

标签: c# json jsonp json.net

我正在使用 NewtonSoft.Json 解析器来解析远程网址。

我的远程JSON示例如下

Kerberos.load({"todays" : "Fri, Mar 15",
    "datas" : [
            {
                "id" : "2021200303"
            }
            ]});

我正在解析JSON示例,如下所示

using (var WebClient = new System.Net.WebClient())
{
    WebClient.Encoding = System.Text.Encoding.UTF8;

    var _Json = WebClient.DownloadString(_MyJsonRemoteURL_);

    _Json = _Json.Replace("Kerberos.load(", "");
    _Json = _Json.Replace("]});", "]}");

    dynamic _Dynamic = JsonConvert.DeserializeObject(_Json);
    foreach (var _JsonNode in _Dynamic.datas)
    {
        MessageBox.Show(_JsonNode.SelectToken("id").ToString());
    }
}

那么,有没有办法验证远程JSON字符串,而不使用替换方法?

1 个答案:

答案 0 :(得分:-2)

如果你想为JSON做这件事很有可能,请查看Contract testing a json service in .net

在此处交叉发布代码以供快速参考,更多详细信息请查看链接

[Test]
public void ShouldBeAbleToValidateTheJSONServiceResponseForFunctionalityA()
{
    const string schemaJson = @"
{
    'description': 'Service Response',
    'type': 'object',
    'properties': {
        'product': {
            'type': 'object',
            'properties': {
                'availability': {
                        'type': 'array',
                        'items': {
                                    'type': 'object',
                                    'properties': {
                                                    'Local': { 'type' : 'number'},
                                                    'Storehouse': { 'type' : 'number'},
                                                } 
                                }
                    }
            }        
        }
    }
}";
    var parameters = new Dictionary<string, object> { { "id", 1 }, { "city", "Chennai" } };
    AssertResponseIsValidSchema(schemaJson, parameters);
}