c# - 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
异常。
解决方案
您提供的 json 字符串包含一个 json 对象,而不是 json 数组,因此您应该相应地反序列化它:
TestRun RunData = JsonConvert.DeserializeObject<TestRun>(testrun_Data);
推荐阅读
- docker - 仅将 Docker Swarm Manager 节点公开到 Internet。隐藏工作人员(无公共 IP)
- javascript - 在 Electron 的渲染器中导出/定义函数的正确方法
- flutter - 使 BLoC 状态持久化,以便使用 Flutter 制作离线应用程序
- angular - Angular 7,命名路由器插座在延迟加载的模块中不起作用
- java - 转换列表
> 流式传输 - java - 如何解决:“StepsCode 类型的层次结构不一致”问题
- javascript - 引导多选不是一个功能 - 不检查多选脚本
- java - 如何通过 Jenkins 定位特定的 Cucumber 功能文件(自动化测试)?
- actionscript-3 - 在 Adobe AIR windows 应用程序中调整舞台大小
- karate - 检查标头是否包含有效的 UUID