JSON反序列化,获取属性名称而不是值

时间:2016-06-17 09:39:54

标签: c# json json-deserialization

首先,这个问题可能以前曾被问过,但由于我的措辞不好,我找不到答案。

我从WebService调用

返回一个奇怪格式的JSON字符串
{
    "id":5000174774,
    "name":"company_name",
    "choices":
    {
        "Farmway":
        {
            "Head Office (BSU)":[],
            "Alnwick":[],
            "Bury St Edmunds":[]
        },
        "Tate":
        {
            "Head Office":[],
            "Tate Britain Entrance":[]
        }
    }
}

以下是我要用于反序列化的类

public class RootObject
{
    [JsonProperty("id")]
    public long Id { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }

    [JsonProperty("choices")]
    public Company[] Companies{ get; set; }
}

public class Company
{
    public string[] Shops { get; set; }
}

我从未见过这样的JSON格式,我不知道如何获取属性名称而不是值。 "choices"不是array而是object,但我事先无法知道其属性。我只想得到所有公司及其商店。

我希望它有某种意义。

1 个答案:

答案 0 :(得分:0)

我不知道你的解串器,但通常一个好的候选者是Dictionary

[JsonProperty("choices")]
public Dictionary<string, Dictionary<string, List<OfSomething>> Companies { get; set; }

所以,你的第一个键是一个字符串,带有公司名称,值是另一个字典,将公司BU链接到我不知道的列表/数组。

如果您需要将此结构详细说明为其他内容,则可以使用Linq进行处理。