如何使用 Newtonsoft 反序列化 JSON 对象,当它的字段名称是像 "short" 这样的保留关键字时?
How to deserialize JSON object with Newtonsoft when it's fields names are reserved keywords like "short"?
我有一些 JSON 对象:
"opf": {
"type": "2014",
"code": "12247",
"full": "Публичное акционерное общество",
"short": "ПАО"
}
我想让它反序列化到我的 class:
class SuggestionInfoDataOpf
{
public string code;
public string full;
public string short; //ERROR. Of course I can't declare this field
public string type;
}
怎么办?..我想像这样反序列化它:Newtonsoft.Json.JsonConvert.DeserializeObject<SuggestionInfoDataOpf>(json_str);
,但字段名称应该匹配。
通过使用 JsonProperty
属性
class SuggestionInfoDataOpf
{
[JsonProperty("short")]
public string Something {get; set;}
}
或在 属性 的名称前使用前缀“@”。使用它您可以将成员命名为关键字
class SuggestionInfoDataOpf
{
public string @short;
}
但 IMO JsonProperty
更好,因为它允许您遵守 C# 命名准则以及在视觉上将成员与关键字分开
您应该像这样在 @
中使用关键字:
class SuggestionInfoDataOpf
{
public string code;
public string full;
public string @short;
public string type;
}
我有一些 JSON 对象:
"opf": {
"type": "2014",
"code": "12247",
"full": "Публичное акционерное общество",
"short": "ПАО"
}
我想让它反序列化到我的 class:
class SuggestionInfoDataOpf
{
public string code;
public string full;
public string short; //ERROR. Of course I can't declare this field
public string type;
}
怎么办?..我想像这样反序列化它:Newtonsoft.Json.JsonConvert.DeserializeObject<SuggestionInfoDataOpf>(json_str);
,但字段名称应该匹配。
通过使用 JsonProperty
属性
class SuggestionInfoDataOpf
{
[JsonProperty("short")]
public string Something {get; set;}
}
或在 属性 的名称前使用前缀“@”。使用它您可以将成员命名为关键字
class SuggestionInfoDataOpf
{
public string @short;
}
但 IMO JsonProperty
更好,因为它允许您遵守 C# 命名准则以及在视觉上将成员与关键字分开
您应该像这样在 @
中使用关键字:
class SuggestionInfoDataOpf
{
public string code;
public string full;
public string @short;
public string type;
}