C#类如何处理JSON中的美元符号?

我从Google的数据API获取JSON提要,许多属性名称以$字符(美元符号)开头。

我的问题是我不能创建一个带有以美元符号开头的变量名的C#类,语言不允许这样做。 我正在使用Newtonsoft的JSON.NET将JSON转换为C#对象。 我怎样才能解决这个问题?

您可以尝试使用[JsonProperty]属性指定名称:

 [JsonProperty(PropertyName = "$someName")] public string SomeName { get; set; } 

firas489在正确的轨道上,$表示元数据,而不是实际的数据字段。 但是修复实际上是这样做的:

 JsonSerializerSettings settings = new JsonSerializerSettings(); settings.MetadataPropertyHandling = MetadataPropertyHandling.Ignore; 

将元数据处理设置为ignore,然后可以使用PropertyName属性序列化/反序列化该属性:

 [JsonProperty("$id")] public string Id { get; set; } 

带有美元符号($)的项目通常是元数据而非字段。 当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信息的同时处理数据类型。

希望有所帮助..