首页 > 解决方案 > C# 中出现“Newtonsoft.Json.JsonSerializationException”类型的异常

问题描述

我有一个类定义为

public class TestRun
{
    [JsonProperty("links")]
    public List<Links> Links { get; set; }
    [JsonProperty("id")]
    public string id { get; set; }
    [JsonProperty("name")]
    public string name { get; set; }
    [JsonProperty("pid")]
    public string pid { get; set; }
    [JsonProperty("properties")]
    public List<Properties> Properties { get; set; }
    [JsonProperty("test_case")]
    public TestRunCase test_case { get; set; }
    [JsonProperty("test_case_version_id")]
    public string test_case_version_id { get; set; }
    [JsonProperty("page")]
    public string page { get; set; }
    [JsonProperty("page_size")]
    public string page_size { get; set; }
    [JsonProperty("total")]
    public string total { get; set; }
    [JsonProperty("items")]
    public List<Items> Items { get; set; }
}

我的代码的另一部分获取 JSON 数据字符串并将转换后的数据分配给数组

TestRun[] RunData = JsonConvert.DeserializeObject<TestRun[]>(testrun_Data);

大多数时候,这个 testrun_Data 的 JSON 字符串由一组 TestRun 类型的数据组成,这很好。但是当它像下面显示的那样时,

{"links":[],"page":1,"page_size":100,"total":0,"items":[]}

将抛出类型Newtonsoft.Json.JsonSerializationException异常。

标签: c#jsonjson.net

解决方案


您提供的 json 字符串包含一个 json 对象,而不是 json 数组,因此您应该相应地反序列化它:

TestRun RunData = JsonConvert.DeserializeObject<TestRun>(testrun_Data);

推荐阅读