我在这个问题上卡了很久。我收到的JSON响应发送的键包括句点。例如:“cost_center.code”。
我该如何将其放入我的对象中?我没有收到任何错误,但是值仅作为null进入,并未反序列化为我的类。
这是我的类:
public class Result
{
public string company { get; set; }
public string first_name { get; set; }
public string email { get; set; }
public string employee_id { get; set; }
public string last_name { get; set; }
[DeserializeAs(Name="cost_center.code")]
public string cost_center { get; set; }
}
public class RootObject
{
public List<Result> result { get; set; }
}
以下是JSON响应:
{
"result": [
{
"company": "My Company",
"first_name": "First",
"email": "example@fakeaddress.com",
"employee_id": "123456789",
"last_name": "Last",
"cost_center.code": "12345"
}
]
}
我使用以下命令进行执行:
var response = client.Execute<List<RootObject>>(request);
// this returns null
Console.WriteLine(response.Data[0].result[0].cost_center);
// all other values return fine ex:
Console.WriteLine(response.Data[0].result[0].company);
我尝试了使用DeserializeAs和不使用它。我不确定它是否起作用。我是否错误地使用了这个属性?这是列表的容器问题吗?
编辑并接受下面的答案,使用JsonProperty解决了这个问题。对于其他可能遇到此问题的人来说,这是解决方案。
添加JSON.net nuget。
using Newtonsoft.Json;
按照以下方式设置JsonProperty:
[JsonProperty("cost_center.code")]
我把我的执行代码改成了:
var response = client.Execute(request);
然后像这样反序列化它:
var jsonResponse = JsonConvert.DeserializeObject<RootObject>(response.Content);
然后我就可以访问这个值:
Console.WriteLine(jsonResponse.result[0].CostCenter