ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – RestSharp – 使用无效的密钥名称反序列化json响应(包含句点)

2019-07-02 15:54:44  阅读:218  来源: 互联网

标签:json c serialization restsharp


我已经坚持了一段时间.我有一个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,我都试过了.我不确定它是否正常工作.我错误地使用了这个属性吗?这是List的容器问题吗?

编辑并接受以下答案以使用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

解决方法:

使用名称中包含句点的属性执行以下操作:

[JsonProperty("cost_center.code")]
public string CostCenter{ get; set; }

它应该工作

标签:json,c,serialization,restsharp
来源: https://codeday.me/bug/20190702/1357657.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有