我从Google 的数据 API获取 JSON 提要,许多属性名称以 $ 字符(美元符号)开头。
我的问题是我不能创建一个变量名以美元符号开头的 C# 类,这是语言不允许的。我正在使用Newtonsoft 的 JSON.NET将 JSON 转换为 C# 对象。我怎样才能解决这个问题?
我从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;
将元数据处理设置为忽略,然后您可以使用 PropertyName 属性序列化/反序列化属性:
[JsonProperty("$id")]
public string Id { get; set; }
那些带有美元符号 ($) 的项目通常是元数据而不是字段。当 JSON.NET 序列化一个对象并告诉它处理对象类型时,它将插入表示元数据的 $ 项,以便稍后正确反序列化。
如果要将 $ 项视为元数据,请使用 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 处理数据类型,同时依靠 $ 获取信息。
希望有帮助..