我从Google's data API获得了一个JSON提要,很多属性名称以$字符(美元符号)开头。
我的问题是我无法使用以美元符号开头的变量名创建一个C#类,语言不允许这样做。我正在使用JSON.NET from Newtonsoft将JSON转换为C#对象。我怎样才能解决这个问题呢?
答案 0 :(得分:21)
您可以尝试使用[JsonProperty]
属性指定名称:
[JsonProperty(PropertyName = "$someName")]
public string SomeName { get; set; }
答案 1 :(得分:6)
firas489在正确的轨道上表示$表示元数据,而不是实际的数据字段。然而,修复实际上是这样做的:
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MetadataPropertyHandling = MetadataPropertyHandling.Ignore;
将元数据处理设置为ignore,然后您可以使用PropertyName属性序列化/反序列化该属性:
[JsonProperty("$id")]
public string Id { get; set; }
答案 2 :(得分:2)
带有美元符号($)的项目通常是元数据而非字段。当JSON.NET序列化一个对象并告诉它处理对象类型时,它将插入表示元数据的$ items,以便以后进行正确的反序列化。
如果要将$项视为元数据,请使用JsonSerializerSettings。例如:
Dim jsonSettings As New Newtonsoft.Json.JsonSerializerSettings With {.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All}
Dim jsonOut As String = Newtonsoft.Json.JsonConvert.SerializeObject(objects, jsonSettings)
TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All告诉JSON在依赖$ for信息的同时处理数据类型。
希望有所帮助..