【问题标题】:C# JsonConvert - How to parse an irregular key / value JSON?C# JsonConvert - 如何解析不规则的键/值 JSON?
【发布时间】:2019-03-12 17:11:47
【问题描述】:

我正在尝试从包含以下信息的文件中获取带有 JsonConvert 的 json:

 {
  "Programacion": {
    "F201604260700": { "Comercial": "COM63039" },
    "F201604260805": { "Comercial": "COM63039" },
    "F201604260944": { "Comercial": "COM63039" },
    "F201604261113": { "Comercial": "COM63039" }
    }
 }

为了能够存储 json,我创建了一个名为 Tandas 的类,因为每个“编程”都有不同的键(“F201604260700”、“F201604260805”)我没有设法创建一个适合我的数据数组

public class Tandas
        {
            // Not work
            //public IEnumerable<IDictionary<string, string>> Programacion { get; set; }

            // Not work
            public List<KeyValuePair<string, KeyValuePair<string, string>>> Programacion { get; set; }
        }

我对 C# 中的修复和对象知之甚少,我能给出什么解决方案?

// Error
this.tandas = JsonConvert.DeserializeObject<Tandas>(json_tandas_string);

【问题讨论】:

  • { "Comercial": "COM63039" } 部分中的键是否也是不规则的,或者它们有特定的格式?
  • Deserializing JSON dictionary 的可能重复项。
  • Hello JLRisge,{ "Commercial": "" } 是普通键
  • 不应该是一个数组吗?

标签: c# jsonconvert


【解决方案1】:

JsonConvert 可以将 JSON 对象反序列化为 Dictionary&lt;string, T&gt;,其中 T 是值的类型。

在这种情况下,这些值也是 JSON 对象,具有字符串值,因此在这种情况下 T 将是 Dictionary&lt;string, string&gt;

全班:

public class Tandas
{
    public Dictionary<string, Dictionary<string, string>> Programacion { get; set; }
}

您现在已经澄清了内部对象包含常规键,因此您可以为此定义一个类:

public class InnerThing
{
    public string Comercial { get; set; }
}

public class Tandas
{
    public Dictionary<string, InnerThing> Programacion { get; set; }
}

【讨论】:

  • 太棒了!它可以工作,结果可以用 foreach 迭代,非常感谢!
猜你喜欢
  • 2020-04-12
  • 2022-12-11
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
相关资源
最近更新 更多