JSON不一致

时间:2019-05-28 17:29:50

标签: c# json

我正在尝试使用不一致的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密钥以外,其他密钥也必须经过验证,并且它们是强制性的。

1 个答案:

答案 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; }
    }

希望这可以解决您的问题。 谢谢