【问题标题】:JSON deserialization, get properties name not value [duplicate]JSON反序列化,获取属性名称而不是值[重复]
【发布时间】:2016-06-17 09:39:53
【问题描述】:

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

我从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,但我无法事先知道它的属性。我只想获取所有公司及其商店。

我希望它有某种意义。

【问题讨论】:

    标签: c# json json-deserialization


    【解决方案1】:

    我不知道你的反序列化器,但通常一个好的候选人是Dictionary

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

    所以,您的第一个键是一个字符串,带有公司名称,值是另一个字典,将公司 BU 链接到 I-don't-know-what 的列表/数组。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-28
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 2016-01-14
      相关资源
      最近更新 更多