反序列化动态JSON响应

时间:2014-07-09 21:15:52

标签: c# json json.net deserialization

我使用Newtonsoft Json.NET API来解析JSON响应。

我有以下JSON:

{
    "country" : "DE",
    "external_urls": 
    {
        "spotify" : "https://open.spotify.com/user/123",
        "another" : "https://open.spotify.com/user/1232"
    }
}

两个键" spotify"和另一个"是动态的,这意味着他们的名字可能会随着下一次响应而改变。也没有固定的长度,在" external_urls"

中总会有更多或更少的条目

尝试将其解析为以下对象:

public class FullProfileResponse
{
    [JsonProperty("country")]
    public String Country { get; set; }
    [JsonProperty("external_urls")]
    public ExternalUrls ExternalUrls { get; set; }
}
public class ExternalUrls
{
    public String Key { get; set; }
    public String Value { get; set; }
}

如何让Json.NET将密钥名称反序列化为public String Key?所以我会Key = "spotify"Key = "another"

我需要使用List或IEnumerable,但如果它是一个动态对象,它总是可以改变它的大小而不是一个数组 ?

1 个答案:

答案 0 :(得分:2)

ExternalUrls 声明为

 [JsonProperty("external_urls")]
 public Dictionary<string,string> ExternalUrls { get; set; }