C# JsonConvert - 如何解析不规则键/值 JSON?
C# JsonConvert - How to parse an irregular key / value JSON?
我正在尝试使用 JsonConvert 从包含以下信息的文件中获取 json:
{
"Programacion": {
"F201604260700": { "Comercial": "COM63039" },
"F201604260805": { "Comercial": "COM63039" },
"F201604260944": { "Comercial": "COM63039" },
"F201604261113": { "Comercial": "COM63039" }
}
}
为了能够存储 json,我创建了一个名为 Tandas 的 class,因为每个 "Programming" 都有不同的密钥("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);
JsonConvert 可以将 JSON 对象反序列化为 Dictionary<string, T>
,其中 T
是值的类型。
在这种情况下,值也是 JSON 个对象,具有字符串值,因此 T
在这种情况下将是 Dictionary<string, string>
.
完整 class:
public class Tandas
{
public Dictionary<string, Dictionary<string, string>> Programacion { get; set; }
}
您现在已经阐明了内部对象包含常规键,因此您可以为此定义一个 class:
public class InnerThing
{
public string Comercial { get; set; }
}
public class Tandas
{
public Dictionary<string, InnerThing> Programacion { get; set; }
}
我正在尝试使用 JsonConvert 从包含以下信息的文件中获取 json:
{
"Programacion": {
"F201604260700": { "Comercial": "COM63039" },
"F201604260805": { "Comercial": "COM63039" },
"F201604260944": { "Comercial": "COM63039" },
"F201604261113": { "Comercial": "COM63039" }
}
}
为了能够存储 json,我创建了一个名为 Tandas 的 class,因为每个 "Programming" 都有不同的密钥("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);
JsonConvert 可以将 JSON 对象反序列化为 Dictionary<string, T>
,其中 T
是值的类型。
在这种情况下,值也是 JSON 个对象,具有字符串值,因此 T
在这种情况下将是 Dictionary<string, string>
.
完整 class:
public class Tandas
{
public Dictionary<string, Dictionary<string, string>> Programacion { get; set; }
}
您现在已经阐明了内部对象包含常规键,因此您可以为此定义一个 class:
public class InnerThing
{
public string Comercial { get; set; }
}
public class Tandas
{
public Dictionary<string, InnerThing> Programacion { get; set; }
}