序列化JSON属性名称与逗号在其名称?

  • 本文关键字:JSON 属性 序列化 c#
  • 更新时间 :
  • 英文 :


我试图从API检索JSON数据,但其中一个属性名称来自@data.context。它不是一个嵌套属性。我也用ExpandoObject测试过,它就是那样的。通常在c#中,我会创建一个像

这样的数据模型
public class Data
{
public string @odata.context { get ; set; }
}

但是这不起作用,因为c#不允许我在变量名中使用逗号,也不允许在它周围使用引号。@符号已经在那里了

JSON是这样的:这个属性包含一个链接,然后另一个包含一个对象列表。

{
"@odata.context": "some link here",
"list" [ {}, {}
]
}

对象列表没有给我任何麻烦,只有第一个属性。

您可以使用JsonPropertyName属性将json映射到属性,例如:

[JsonPropertyName("@odata.context")] 
public string DataContext { get ; set; }

微软文档

您可能正在使用设计不良的API。有一些API规范告诉我们如何构造和命名JSON键。一种方法是

1从API获取JSON响应

2替换"@data.context"与"Context"或者类似的JSON字符串

创建属性为 的类
public class Data
{
public string Context { get ; set; }
}

4反序列化

最新更新