我有一个JSON返回如下。
{
"id": 100,
"name": "employer 100",
"externalId": "100-100",
"networkId": 1000,
"address": {
"street-address": "1230 Main Street",
"locality": "Vancouver",
"postal-code": "V6B 5N2",
"region": "BC",
"country-name": "CA"
}
}
所以我创建了一个类来反序列化上面的json。
public class Employer
{
public int id { get; set; }
public string name { get; set; }
public string externalId { get; set; }
public int networkId { get; set; }
public Address address { get; set; }
}
public class Address
{
public string street_address { get; set; }
public string locality { get; set; }
public string postal_code { get; set; }
public string region { get; set; }
public string country_name { get; set; }
}
var response = _client.Execute(req);
return _jsonDeserializer.Deserialize <Employer> (response);
但我无法从Json字符串中获取 街道地址,邮政编码和国家/地区名称 。我认为因为Json输出键包含&#34;&#34; - &#34;&#34; (结果我得到了空白。)
那么我怎么能解决我的问题?
答案 0 :(得分:3)
在属性中使用DeserializeAs属性:
[DeserializeAs(Name = "postal-code")]
public string postal_code { get; set; }
这允许您在json中设置相同的属性,该属性映射到类中的属性,允许该属性具有与子的不同的名称。
答案 1 :(得分:0)
如果您正在使用JSON.net,请使用属性上的属性指定它们应匹配的名称:
public class Employer
{
public int id { get; set; }
public string name { get; set; }
public string externalId { get; set; }
public int networkId { get; set; }
public Address address { get; set; }
}
public class Address
{
[JsonProperty("street-address")]
public string street_address { get; set; }
public string locality { get; set; }
[JsonProperty("postal-code")]
public string postal_code { get; set; }
public string region { get; set; }
[JsonProperty("country-name")]
public string country_name { get; set; }
}