以下是成功创建新的“工作代码”条目后从REST API获得的(略)简化的响应。我需要将响应反序列化为某些类,但是我很困惑。
作为参考,我在.NET 3.5(在SQL Server 2008 R2中的SSIS脚本中运行)中使用JSON.NET尝试反序列化。这是JSON-我显然无法控制它,因为它来自其他人的API:
{
"results":{
"jobcodes":{
"1":{
"_status_code":200,
"_status_message":"Created",
"id":444444444,
"assigned_to_all":false,
"billable":true,
"active":true,
"type":"regular",
"name":"1234 Main Street - Jackson"
},
"2":{
"_status_code":200,
"_status_message":"Created",
"id":1234567890,
"assigned_to_all":false,
"billable":true,
"active":true,
"type":"regular",
"name":"4321 Some Other Street - Jackson"
}
}
}
}
在我的C#代码中,我确实定义了一个“ JobCode”类,该类仅将JSON值部分映射到属性-我对返回给我的所有数据不感兴趣:
[JsonObject]
class JobCode
{
[JsonProperty("_status_code")]
public string StatusCode { get; set; }
[JsonProperty("_status_message")]
public string StatusMessage { get; set; }
[JsonProperty("id")]
public string Id {get; set;}
[JsonProperty("name")]
public string Name { get; set; }
}
我正在尝试通过此调用反序列化数据:
newResource = JsonConvert.DeserializeObject<JobCode>(jsonResponse);
其中jsonResponse是上面输出的代码。
当我执行代码时,“ newResource”总是返回为空-这并不意外,因为我知道数据中实际上有多个作业代码,并且此代码试图将其反序列化为单个JobCode对象。我尝试创建一个名为“ JobCodes”的新类,如下所示:
class JobCodes
{
[JsonProperty("jobcodes")]
public List<JobCode>_JobCodes { get; set; }
}
然后我尝试调用此命令:
newResource = JsonConvert.DeserializeObject<JobCodes>(jsonResponse);
但是问题仍然存在-我的返回对象为null。我认为让我失望的是标识符“ 1”和“ 2”的存在。我不知道如何在我的对象设计和/或JSON.NET类/属性属性(例如[JsonObject],[JsonProperty]等)的使用中考虑它们的存在。
当我通过JSON2CSharp运行JSON数据时,它构造了一些看起来很奇怪的类,因此尚未证明它太有效。我已经用几个不同的验证器验证了JSON,并且都将其检出-我只是不知道我在这里缺少什么。
最终,我想从JSON数据返回一个List,但是我为实现该目标而感到困惑。
杨魅力
相关分类