我正在尝试使用不一致的C#解析JSON,即 下面是我得到的JSON示例。
{
"Timestamp" : "2019-05-09T11:24:25.000Z",
"Channel" : "web",
"Supplier" : "kunde",
"Generator" : "survey",
"Type" : "hudtest",
"Data" :{
"Alder" : "20-29",
"Køn" : "Kvinde",
"Hudtype" : "sensitiv",
"Hudtilstand" : "mixet"
}
}
此JSON的变体如下:
{
"Timestamp" : "2019-05-09T11:24:25.000Z",
"Channel" : "web",
"Supplier" : "kunde",
"Generator" : "survey",
"Type" : "hudtest",
"Data" :{
"Alder" : "20-29",
"Køn" : "Kvinde",
"Hudtype" : "sensitiv",
"Hudtilstand" : "mixet",
"materialistID" : 61234,
"Anbefalede produkter" : [ 100225, 725125 ]
}
}
在两个示例中都可以看到,Data
键中的值不同。如何在C#中解析此JSON?
仅供参考:Data
键的值可以不同于我在上面共享的示例。不仅"Anbefalede produkter
。它可以包含许多不同的值。
我尝试将其设置为dynamic
或也解析为anonymous
类型。但是我还想验证我的JSON模式,除了Data
密钥以外,其他密钥也必须经过验证,并且它们是强制性的。
答案 0 :(得分:2)
您可以这样做
class Program
{
static void Main(string[] args)
{
string jsonData = @"{ 'Timestamp': '2019-05-09T11:24:25.000Z',
'Channel': 'web',
'Supplier': 'kunde',
'Generator': 'survey',
'Type': 'hudtest',
'Data': {
'Alder': '20-29',
'Køn': 'Kvinde',
'Hudtype': 'sensitiv',
'Hudtilstand': 'mixet',
'materialistID': 61234,
'Anbefalede produkter': [100225, 725125]
}
}";
var b = JsonConvert.DeserializeObject<Rootobject>(jsonData);
//Console.WriteLine(b.Data.Hudtype);
//or
Console.WriteLine(b.Data["Hudtype"]);
Console.ReadKey();
}
}
public class Rootobject
{
public DateTime Timestamp { get; set; }
public string Channel { get; set; }
public string Supplier { get; set; }
public string Generator { get; set; }
public string Type { get; set; }
public Dictionary<string, object> Data { get; set; }
}
希望这可以解决您的问题。 谢谢