将复杂(嵌套)JSON反序列化为C#对象

问题描述:

我一直在研究API的复杂JSON响应的反序列化。我是C#和.NET新手,所以我不知道如何继续。将复杂(嵌套)JSON反序列化为C#对象

我想要做什么:

我想收集在JSON响应中的所有项目,并把他们在键值对,并在列表中用于测试目的的控制台应用程序归还。

当我调试时它工作得很好,我可以看到它按预期映射了所有键值对。我的努力是在控制台应用程序中返回列表中的所有内容。

这是我的“模型”类的代码。

​​

这是我的代码“WriteLine”命令尝试列出列表中的所有键值对。

using System; 

class ConsoleAppClass 
{ 
    static void Main() 
    { 
     string json2 = @"{""code"":200,""message"":""OK"",""profiling"":null,""count"":6,""skip"":0,""limit"":50,""next_page"":null,""previous_page"":null,""additional_meta"":{""$and"":[{""deleted"":false},{""$or"":[{""holder_id"":{""$id"":""5543677f37c6b65f008b46e4""}},{""root.holder._id"":{""$id"":""5543677f37c6b65f008b46e4""}}]}]},""data"":[{""_id"":""5825c6f6de22ae00632e86f3"",""ean"":""659842"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""5824790e3d214b006271c515"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:26:14+0000"",""children"":[],""address"":""Kungsgatan 2"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""heat"",""consumption_stats"":{""energy"":{""hour"":{""count"":26275,""sum"":6546140,""max"":930,""last"":2016123021,""min"":0,""first"":2014010101},""day"":{""count"":1091,""sum"":6522120,""max"":18900,""last"":20161229,""min"":1180,""first"":20140102},""month"":{""count"":33,""sum"":5727310,""max"":387190,""last"":201708,""min"":49750,""first"":201402}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c76920fe9b006308e412"",""ean"":""735999999564879216"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""5824790e3d214b006271c510"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:28:09+0000"",""children"":[],""address"":""Kungsgatan 2"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""electricity"",""consumption_stats"":{""energy"":{""hour"":{""count"":25953,""sum"":311714.628,""max"":34.3,""last"":2016121709,""min"":0,""first"":2014010101},""day"":{""count"":1080,""sum"":311302.328,""max"":689,""last"":20161216,""min"":141.1,""first"":20140102},""month"":{""count"":35,""sum"":306915.54,""max"":13704.72,""last"":201708,""min"":6013.932,""first"":201402}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c84b22c8aa00623d65a5"",""ean"":""6934363"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""577fdd960c8a335c008b4672"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:31:55+0000"",""children"":[],""address"":""Gr\u00e4nsv\u00e4gen 12B"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""gas"",""consumption_stats"":{""energy"":{""month"":{""count"":24,""sum"":42656.62,""max"":8890.65,""last"":201708,""min"":104.57,""first"":201501},""hour"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0},""day"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c85320fe9b006308e41d"",""ean"":""5896584"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""577fdd960c8a335c008b466c"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:32:03+0000"",""children"":[],""address"":""Gr\u00e4nsv\u00e4gen 12B"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""heat"",""consumption_stats"":{""energy"":{""month"":{""count"":57,""sum"":3592320,""max"":173000,""last"":201709,""min"":2000,""first"":201301},""hour"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0},""day"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c85920fe9b0061547253"",""ean"":""735999666123123123"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""577fdd960c8a335c008b4669"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:32:09+0000"",""children"":[],""address"":""Gr\u00e4nsv\u00e4gen 12B"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""electricity"",""consumption_stats"":{""energy"":{""month"":{""count"":45,""sum"":141604.36,""max"":6488.2,""last"":201709,""min"":1759.64,""first"":201401},""hour"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0},""day"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c85d22c8aa00606b9dd5"",""ean"":""1200004"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""577fdd960c8a335c008b466f"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:32:13+0000"",""children"":[],""address"":""Gr\u00e4nsv\u00e4gen 12B"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""cooling"",""consumption_stats"":{""energy"":{""month"":{""count"":33,""sum"":902350,""max"":92560,""last"":201709,""min"":9730,""first"":201501},""hour"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0},""day"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null}]}"; 

     var items = JsonConvert.DeserializeObject<List<ModelsClass.Rootobject>>(json2); 
     foreach (ModelsClass.Rootobject value in items) 
     { 
      Console.WriteLine(value, items); 
     } 
     Console.ReadKey(); 
    } 
} 

那么,谁能帮我我如何从我的模型类返回我的所有键值对的命令行?如你所见,JSON响应对于混合对象和数组非常复杂。

1-你应该从你的JSON文本删除$字符

2-根节点是不是数组,这就是为什么像这样的

JsonConvert.DeserializeObject<ConsoleApplication2.Rootobject>(json2); 

3-变化反序列化操作您可以使用此功能打印名称 - 值对。

private static void printPropertyNameValue(object obj, int intent) 
    { 
     foreach (var property in obj.GetType().GetProperties()) 
     { 
      if (!property.CanWrite) 
       continue; 

      var value = property.GetValue(obj); 

      if (value != null && value.GetType().IsArray) 
      { 
       Console.WriteLine("{0}{1}", "".PadLeft(intent, '-'), property.Name); 
       foreach (var item in ((Object[])value)) 
       { 
        printPropertyNameValue(item, intent + 1); 
       } 
      } 
      else 
      { 
       if (value != null && (value.GetType()).IsClass) 
       { 
        Console.WriteLine("{0}{1}", "".PadLeft(intent, '-'), property.Name); 
        printPropertyNameValue(property.GetValue(obj), intent + 1); 
       } 
       else 
       { 
        Console.WriteLine("{0}{1}:{2}", "".PadLeft(intent, '-'), property.Name, value); 
       } 
      } 
     } 
    } 

4和最终的主要功能是这样的:

static void Main(string[] args) 
    { 

     string json2 = @"{""code"":200,""message"":""OK"",""profiling"":null,""count"":6,""skip"":0,""limit"":50,""next_page"":null,""previous_page"":null,""additional_meta"":{""and"":[{""deleted"":false},{""or"":[{""holder_id"":{""id"":""5543677f37c6b65f008b46e4""}},{""root.holder._id"":{""id"":""5543677f37c6b65f008b46e4""}}]}]},""data"":[{""_id"":""5825c6f6de22ae00632e86f3"",""ean"":""659842"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""5824790e3d214b006271c515"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:26:14+0000"",""children"":[],""address"":""Kungsgatan 2"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""heat"",""consumption_stats"":{""energy"":{""hour"":{""count"":26275,""sum"":6546140,""max"":930,""last"":2016123021,""min"":0,""first"":2014010101},""day"":{""count"":1091,""sum"":6522120,""max"":18900,""last"":20161229,""min"":1180,""first"":20140102},""month"":{""count"":33,""sum"":5727310,""max"":387190,""last"":201708,""min"":49750,""first"":201402}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c76920fe9b006308e412"",""ean"":""735999999564879216"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""5824790e3d214b006271c510"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:28:09+0000"",""children"":[],""address"":""Kungsgatan 2"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""electricity"",""consumption_stats"":{""energy"":{""hour"":{""count"":25953,""sum"":311714.628,""max"":34.3,""last"":2016121709,""min"":0,""first"":2014010101},""day"":{""count"":1080,""sum"":311302.328,""max"":689,""last"":20161216,""min"":141.1,""first"":20140102},""month"":{""count"":35,""sum"":306915.54,""max"":13704.72,""last"":201708,""min"":6013.932,""first"":201402}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c84b22c8aa00623d65a5"",""ean"":""6934363"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""577fdd960c8a335c008b4672"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:31:55+0000"",""children"":[],""address"":""Gr\u00e4nsv\u00e4gen 12B"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""gas"",""consumption_stats"":{""energy"":{""month"":{""count"":24,""sum"":42656.62,""max"":8890.65,""last"":201708,""min"":104.57,""first"":201501},""hour"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0},""day"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c85320fe9b006308e41d"",""ean"":""5896584"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""577fdd960c8a335c008b466c"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:32:03+0000"",""children"":[],""address"":""Gr\u00e4nsv\u00e4gen 12B"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""heat"",""consumption_stats"":{""energy"":{""month"":{""count"":57,""sum"":3592320,""max"":173000,""last"":201709,""min"":2000,""first"":201301},""hour"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0},""day"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c85920fe9b0061547253"",""ean"":""735999666123123123"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""577fdd960c8a335c008b4669"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:32:09+0000"",""children"":[],""address"":""Gr\u00e4nsv\u00e4gen 12B"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""electricity"",""consumption_stats"":{""energy"":{""month"":{""count"":45,""sum"":141604.36,""max"":6488.2,""last"":201709,""min"":1759.64,""first"":201401},""hour"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0},""day"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null},{""_id"":""5825c85d22c8aa00606b9dd5"",""ean"":""1200004"",""name"":null,""holder"":{""_id"":""5543677f37c6b65f008b46e4"",""name"":""Example account"",""username"":""[email protected]""},""root"":{""_id"":""577fdd960c8a335c008b466f"",""holder"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""entity_type"":""utility_provider""}},""assigner"":{""_id"":""577fd0170c8a335c008b45fe"",""name"":""Rob Harvey Utility Company"",""username"":""[email protected]"",""manager"":{""_id"":null}},""created"":""2016-11-11T13:32:13+0000"",""children"":[],""address"":""Gr\u00e4nsv\u00e4gen 12B"",""timezone"":""Etc\/GMT-1"",""control_level"":""shared"",""billing_category"":""owned_meter_consumption"",""generation"":1,""tags"":[],""box"":""active"",""revoked"":false,""metrics"":[""energy""],""type"":""cooling"",""consumption_stats"":{""energy"":{""month"":{""count"":33,""sum"":902350,""max"":92560,""last"":201709,""min"":9730,""first"":201501},""hour"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0},""day"":{""first"":null,""last"":null,""sum"":null,""max"":null,""min"":null,""count"":0}}},""cost_stats"":{},""readings_stats"":null,""has_active_complaints"":false,""representation"":null,""open_channel_ids"":null,""on_hold"":null,""last_sla_comment"":null,""location"":null,""meta_data"":{},""meter_readers"":[],""collection_window"":5,""memo"":null}]}"; 

     var items = JsonConvert.DeserializeObject<ConsoleApplication2.Rootobject>(json2); 

     printPropertyNameValue(items, 0); 

     Console.ReadKey(); 
    } 

获取所有类型&属性从你的类 类似下面

Dictionary<string, string> myDict = new Dictionary<string, string>(); 
Type t = data.GetType(); 

    foreach (PropertyInfo pi in t.GetProperties()) 
    { 
     myDict[pi.Name] = pi.GetValue(data,null).ToString(); 
    } 

(做了一个分开的一篇关于这一点,因为在字符限制)

如果你想看到格式化的JSON示例反应,它是下面:

{ 
    "code":200, 
    "message":"OK", 
    "profiling":null, 
    "count":6, 
    "skip":0, 
    "limit":50, 
    "next_page":null, 
    "previous_page":null, 
    "additional_meta":{ 
     "$and":[ 
     { 
      "deleted":false 
     }, 
     { 
      "$or":[ 
       { 
        "holder_id":{ 
        "$id":"5543677f37c6b65f008b46e4" 
        } 
       }, 
       { 
        "root.holder._id":{ 
        "$id":"5543677f37c6b65f008b46e4" 
        } 
       } 
      ] 
     } 
     ] 
    }, 
    "data":[ 
     { 
     "_id":"5825c6f6de22ae00632e86f3", 
     "ean":"659842", 
     "name":null, 
     "holder":{ 
      "_id":"5543677f37c6b65f008b46e4", 
      "name":"Example account", 
      "username":"[email protected]" 
     }, 
     "root":{ 
      "_id":"5824790e3d214b006271c515", 
      "holder":{ 
       "_id":"577fd0170c8a335c008b45fe", 
       "name":"Rob Harvey Utility Company", 
       "entity_type":"utility_provider" 
      } 
     }, 
     "assigner":{ 
      "_id":"577fd0170c8a335c008b45fe", 
      "name":"Rob Harvey Utility Company", 
      "username":"[email protected]", 
      "manager":{ 
       "_id":null 
      } 
     }, 
     "created":"2016-11-11T13:26:14+0000", 
     "children":[ 

     ], 
     "address":"Kungsgatan 2", 
     "timezone":"Etc\/GMT-1", 
     "control_level":"shared", 
     "billing_category":"owned_meter_consumption", 
     "generation":1, 
     "tags":[ 

     ], 
     "box":"active", 
     "revoked":false, 
     "metrics":[ 
      "energy" 
     ], 
     "type":"heat", 
     "consumption_stats":{ 
      "energy":{ 
       "hour":{ 
        "count":26275, 
        "sum":6546140, 
        "max":930, 
        "last":2016123021, 
        "min":0, 
        "first":2014010101 
       }, 
       "day":{ 
        "count":1091, 
        "sum":6522120, 
        "max":18900, 
        "last":20161229, 
        "min":1180, 
        "first":20140102 
       }, 
       "month":{ 
        "count":33, 
        "sum":5727310, 
        "max":387190, 
        "last":201708, 
        "min":49750, 
        "first":201402 
       } 
      } 
     }, 
     "cost_stats":{ 

     }, 
     "readings_stats":null, 
     "has_active_complaints":false, 
     "representation":null, 
     "open_channel_ids":null, 
     "on_hold":null, 
     "last_sla_comment":null, 
     "location":null, 
     "meta_data":{ 

     }, 
     "meter_readers":[ 

     ], 
     "collection_window":5, 
     "memo":null 
     }, 
     { 
     "_id":"5825c76920fe9b006308e412", 
     "ean":"735999999564879216", 
     "name":null, 
     "holder":{ 
      "_id":"5543677f37c6b65f008b46e4", 
      "name":"Example account", 
      "username":"[email protected]" 
     }, 
     "root":{ 
      "_id":"5824790e3d214b006271c510", 
      "holder":{ 
       "_id":"577fd0170c8a335c008b45fe", 
       "name":"Rob Harvey Utility Company", 
       "entity_type":"utility_provider" 
      } 
     }, 
     "assigner":{ 
      "_id":"577fd0170c8a335c008b45fe", 
      "name":"Rob Harvey Utility Company", 
      "username":"[email protected]", 
      "manager":{ 
       "_id":null 
      } 
     }, 
     "created":"2016-11-11T13:28:09+0000", 
     "children":[ 

     ], 
     "address":"Kungsgatan 2", 
     "timezone":"Etc\/GMT-1", 
     "control_level":"shared", 
     "billing_category":"owned_meter_consumption", 
     "generation":1, 
     "tags":[ 

     ], 
     "box":"active", 
     "revoked":false, 
     "metrics":[ 
      "energy" 
     ], 
     "type":"electricity", 
     "consumption_stats":{ 
      "energy":{ 
       "hour":{ 
        "count":25953, 
        "sum":311714.628, 
        "max":34.3, 
        "last":2016121709, 
        "min":0, 
        "first":2014010101 
       }, 
       "day":{ 
        "count":1080, 
        "sum":311302.328, 
        "max":689, 
        "last":20161216, 
        "min":141.1, 
        "first":20140102 
       }, 
       "month":{ 
        "count":35, 
        "sum":306915.54, 
        "max":13704.72, 
        "last":201708, 
        "min":6013.932, 
        "first":201402 
       } 
      } 
     }, 
     "cost_stats":{ 

     }, 
     "readings_stats":null, 
     "has_active_complaints":false, 
     "representation":null, 
     "open_channel_ids":null, 
     "on_hold":null, 
     "last_sla_comment":null, 
     "location":null, 
     "meta_data":{ 

     }, 
     "meter_readers":[ 

     ], 
     "collection_window":5, 
     "memo":null 
     }, 
     { 
     "_id":"5825c84b22c8aa00623d65a5", 
     "ean":"6934363", 
     "name":null, 
     "holder":{ 
      "_id":"5543677f37c6b65f008b46e4", 
      "name":"Example account", 
      "username":"[email protected]" 
     }, 
     "root":{ 
      "_id":"577fdd960c8a335c008b4672", 
      "holder":{ 
       "_id":"577fd0170c8a335c008b45fe", 
       "name":"Rob Harvey Utility Company", 
       "entity_type":"utility_provider" 
      } 
     }, 
     "assigner":{ 
      "_id":"577fd0170c8a335c008b45fe", 
      "name":"Rob Harvey Utility Company", 
      "username":"[email protected]", 
      "manager":{ 
       "_id":null 
      } 
     }, 
     "created":"2016-11-11T13:31:55+0000", 
     "children":[ 

     ], 
     "address":"Gr\u00e4nsv\u00e4gen 12B", 
     "timezone":"Etc\/GMT-1", 
     "control_level":"shared", 
     "billing_category":"owned_meter_consumption", 
     "generation":1, 
     "tags":[ 

     ], 
     "box":"active", 
     "revoked":false, 
     "metrics":[ 
      "energy" 
     ], 
     "type":"gas", 
     "consumption_stats":{ 
      "energy":{ 
       "month":{ 
        "count":24, 
        "sum":42656.62, 
        "max":8890.65, 
        "last":201708, 
        "min":104.57, 
        "first":201501 
       }, 
       "hour":{ 
        "first":null, 
        "last":null, 
        "sum":null, 
        "max":null, 
        "min":null, 
        "count":0 
       }, 
       "day":{ 
        "first":null, 
        "last":null, 
        "sum":null, 
        "max":null, 
        "min":null, 
        "count":0 
       } 
      } 
     }, 
     "cost_stats":{ 

     }, 
     "readings_stats":null, 
     "has_active_complaints":false, 
     "representation":null, 
     "open_channel_ids":null, 
     "on_hold":null, 
     "last_sla_comment":null, 
     "location":null, 
     "meta_data":{ 

     }, 
     "meter_readers":[ 

     ], 
     "collection_window":5, 
     "memo":null 
     }, 
     { 
     "_id":"5825c85320fe9b006308e41d", 
     "ean":"5896584", 
     "name":null, 
     "holder":{ 
      "_id":"5543677f37c6b65f008b46e4", 
      "name":"Example account", 
      "username":"[email protected]" 
     }, 
     "root":{ 
      "_id":"577fdd960c8a335c008b466c", 
      "holder":{ 
       "_id":"577fd0170c8a335c008b45fe", 
       "name":"Rob Harvey Utility Company", 
       "entity_type":"utility_provider" 
      } 
     }, 
     "assigner":{ 
      "_id":"577fd0170c8a335c008b45fe", 
      "name":"Rob Harvey Utility Company", 
      "username":"[email protected]", 
      "manager":{ 
       "_id":null 
      } 
     }, 
     "created":"2016-11-11T13:32:03+0000", 
     "children":[ 

     ], 
     "address":"Gr\u00e4nsv\u00e4gen 12B", 
     "timezone":"Etc\/GMT-1", 
     "control_level":"shared", 
     "billing_category":"owned_meter_consumption", 
     "generation":1, 
     "tags":[ 

     ], 
     "box":"active", 
     "revoked":false, 
     "metrics":[ 
      "energy" 
     ], 
     "type":"heat", 
     "consumption_stats":{ 
      "energy":{ 
       "month":{ 
        "count":57, 
        "sum":3592320, 
        "max":173000, 
        "last":201709, 
        "min":2000, 
        "first":201301 
       }, 
       "hour":{ 
        "first":null, 
        "last":null, 
        "sum":null, 
        "max":null, 
        "min":null, 
        "count":0 
       }, 
       "day":{ 
        "first":null, 
        "last":null, 
        "sum":null, 
        "max":null, 
        "min":null, 
        "count":0 
       } 
      } 
     }, 
     "cost_stats":{ 

     }, 
     "readings_stats":null, 
     "has_active_complaints":false, 
     "representation":null, 
     "open_channel_ids":null, 
     "on_hold":null, 
     "last_sla_comment":null, 
     "location":null, 
     "meta_data":{ 

     }, 
     "meter_readers":[ 

     ], 
     "collection_window":5, 
     "memo":null 
     }, 
     { 
     "_id":"5825c85920fe9b0061547253", 
     "ean":"735999666123123123", 
     "name":null, 
     "holder":{ 
      "_id":"5543677f37c6b65f008b46e4", 
      "name":"Example account", 
      "username":"[email protected]" 
     }, 
     "root":{ 
      "_id":"577fdd960c8a335c008b4669", 
      "holder":{ 
       "_id":"577fd0170c8a335c008b45fe", 
       "name":"Rob Harvey Utility Company", 
       "entity_type":"utility_provider" 
      } 
     }, 
     "assigner":{ 
      "_id":"577fd0170c8a335c008b45fe", 
      "name":"Rob Harvey Utility Company", 
      "username":"RobHarveyUtilityCompany-utility[email protected]", 
      "manager":{ 
       "_id":null 
      } 
     }, 
     "created":"2016-11-11T13:32:09+0000", 
     "children":[ 

     ], 
     "address":"Gr\u00e4nsv\u00e4gen 12B", 
     "timezone":"Etc\/GMT-1", 
     "control_level":"shared", 
     "billing_category":"owned_meter_consumption", 
     "generation":1, 
     "tags":[ 

     ], 
     "box":"active", 
     "revoked":false, 
     "metrics":[ 
      "energy" 
     ], 
     "type":"electricity", 
     "consumption_stats":{ 
      "energy":{ 
       "month":{ 
        "count":45, 
        "sum":141604.36, 
        "max":6488.2, 
        "last":201709, 
        "min":1759.64, 
        "first":201401 
       }, 
       "hour":{ 
        "first":null, 
        "last":null, 
        "sum":null, 
        "max":null, 
        "min":null, 
        "count":0 
       }, 
       "day":{ 
        "first":null, 
        "last":null, 
        "sum":null, 
        "max":null, 
        "min":null, 
        "count":0 
       } 
      } 
     }, 
     "cost_stats":{ 

     }, 
     "readings_stats":null, 
     "has_active_complaints":false, 
     "representation":null, 
     "open_channel_ids":null, 
     "on_hold":null, 
     "last_sla_comment":null, 
     "location":null, 
     "meta_data":{ 

     }, 
     "meter_readers":[ 

     ], 
     "collection_window":5, 
     "memo":null 
     }, 
     { 
     "_id":"5825c85d22c8aa00606b9dd5", 
     "ean":"1200004", 
     "name":null, 
     "holder":{ 
      "_id":"5543677f37c6b65f008b46e4", 
      "name":"Example account", 
      "username":"[email protected]" 
     }, 
     "root":{ 
      "_id":"577fdd960c8a335c008b466f", 
      "holder":{ 
       "_id":"577fd0170c8a335c008b45fe", 
       "name":"Rob Harvey Utility Company", 
       "entity_type":"utility_provider" 
      } 
     }, 
     "assigner":{ 
      "_id":"577fd0170c8a335c008b45fe", 
      "name":"Rob Harvey Utility Company", 
      "username":"[email protected]", 
      "manager":{ 
       "_id":null 
      } 
     }, 
     "created":"2016-11-11T13:32:13+0000", 
     "children":[ 

     ], 
     "address":"Gr\u00e4nsv\u00e4gen 12B", 
     "timezone":"Etc\/GMT-1", 
     "control_level":"shared", 
     "billing_category":"owned_meter_consumption", 
     "generation":1, 
     "tags":[ 

     ], 
     "box":"active", 
     "revoked":false, 
     "metrics":[ 
      "energy" 
     ], 
     "type":"cooling", 
     "consumption_stats":{ 
      "energy":{ 
       "month":{ 
        "count":33, 
        "sum":902350, 
        "max":92560, 
        "last":201709, 
        "min":9730, 
        "first":201501 
       }, 
       "hour":{ 
        "first":null, 
        "last":null, 
        "sum":null, 
        "max":null, 
        "min":null, 
        "count":0 
       }, 
       "day":{ 
        "first":null, 
        "last":null, 
        "sum":null, 
        "max":null, 
        "min":null, 
        "count":0 
       } 
      } 
     }, 
     "cost_stats":{ 

     }, 
     "readings_stats":null, 
     "has_active_complaints":false, 
     "representation":null, 
     "open_channel_ids":null, 
     "on_hold":null, 
     "last_sla_comment":null, 
     "location":null, 
     "meta_data":{ 

     }, 
     "meter_readers":[ 

     ], 
     "collection_window":5, 
     "memo":null 
     } 
    ] 
} 

我发布了一个关于将JSON对象展平为键值p上周播出,亚历山大彼得罗夫的回应确实帮了我。问题是here。他的代码将处理任何结构的JSON,因此如果更改入站对象,代码仍然会将其转储出去。可能对你有用,希望它有帮助。

你的json在语法上不是正确的(https://jsonlint.com/),并且从我所看到的它不包含ModelClass.Rootobject的列表,而只是此类的对象。 请尝试以下

static void Main() 
{ 
    string json2 = @"{'code':200,'message':'OK','profiling':null,'count':6,'skip':0,'limit':50,'next_page':null,'previous_page':null,'additional_meta':{'$and':[{'deleted':false},{'$or':[{'holder_id':{'$id':'5543677f37c6b65f008b46e4'}},{'root.holder._id':{'$id':'5543677f37c6b65f008b46e4'}}]}]},'data':[{'_id':'5825c6f6de22ae00632e86f3','ean':'659842','name':null,'holder':{'_id':'5543677f37c6b65f008b46e4','name':'Example account','username':'[email protected]'},'root':{'_id':'5824790e3d214b006271c515','holder':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','entity_type':'utility_provider'}},'assigner':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','username':'[email protected]','manager':{'_id':null}},'created':'2016-11-11T13:26:14+0000','children':[],'address':'Kungsgatan 2','timezone':'Etc\/GMT-1','control_level':'shared','billing_category':'owned_meter_consumption','generation':1,'tags':[],'box':'active','revoked':false,'metrics':['energy'],'type':'heat','consumption_stats':{'energy':{'hour':{'count':26275,'sum':6546140,'max':930,'last':2016123021,'min':0,'first':2014010101},'day':{'count':1091,'sum':6522120,'max':18900,'last':20161229,'min':1180,'first':20140102},'month':{'count':33,'sum':5727310,'max':387190,'last':201708,'min':49750,'first':201402}}},'cost_stats':{},'readings_stats':null,'has_active_complaints':false,'representation':null,'open_channel_ids':null,'on_hold':null,'last_sla_comment':null,'location':null,'meta_data':{},'meter_readers':[],'collection_window':5,'memo':null},{'_id':'5825c76920fe9b006308e412','ean':'735999999564879216','name':null,'holder':{'_id':'5543677f37c6b65f008b46e4','name':'Example account','username':'[email protected]'},'root':{'_id':'5824790e3d214b006271c510','holder':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','entity_type':'utility_provider'}},'assigner':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','username':'[email protected]','manager':{'_id':null}},'created':'2016-11-11T13:28:09+0000','children':[],'address':'Kungsgatan 2','timezone':'Etc\/GMT-1','control_level':'shared','billing_category':'owned_meter_consumption','generation':1,'tags':[],'box':'active','revoked':false,'metrics':['energy'],'type':'electricity','consumption_stats':{'energy':{'hour':{'count':25953,'sum':311714.628,'max':34.3,'last':2016121709,'min':0,'first':2014010101},'day':{'count':1080,'sum':311302.328,'max':689,'last':20161216,'min':141.1,'first':20140102},'month':{'count':35,'sum':306915.54,'max':13704.72,'last':201708,'min':6013.932,'first':201402}}},'cost_stats':{},'readings_stats':null,'has_active_complaints':false,'representation':null,'open_channel_ids':null,'on_hold':null,'last_sla_comment':null,'location':null,'meta_data':{},'meter_readers':[],'collection_window':5,'memo':null},{'_id':'5825c84b22c8aa00623d65a5','ean':'6934363','name':null,'holder':{'_id':'5543677f37c6b65f008b46e4','name':'Example account','username':'[email protected]'},'root':{'_id':'577fdd960c8a335c008b4672','holder':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','entity_type':'utility_provider'}},'assigner':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','username':'[email protected]','manager':{'_id':null}},'created':'2016-11-11T13:31:55+0000','children':[],'address':'Gr\u00e4nsv\u00e4gen 12B','timezone':'Etc\/GMT-1','control_level':'shared','billing_category':'owned_meter_consumption','generation':1,'tags':[],'box':'active','revoked':false,'metrics':['energy'],'type':'gas','consumption_stats':{'energy':{'month':{'count':24,'sum':42656.62,'max':8890.65,'last':201708,'min':104.57,'first':201501},'hour':{'first':null,'last':null,'sum':null,'max':null,'min':null,'count':0},'day':{'first':null,'last':null,'sum':null,'max':null,'min':null,'count':0}}},'cost_stats':{},'readings_stats':null,'has_active_complaints':false,'representation':null,'open_channel_ids':null,'on_hold':null,'last_sla_comment':null,'location':null,'meta_data':{},'meter_readers':[],'collection_window':5,'memo':null},{'_id':'5825c85320fe9b006308e41d','ean':'5896584','name':null,'holder':{'_id':'5543677f37c6b65f008b46e4','name':'Example account','username':'[email protected]'},'root':{'_id':'577fdd960c8a335c008b466c','holder':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','entity_type':'utility_provider'}},'assigner':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','username':'[email protected]','manager':{'_id':null}},'created':'2016-11-11T13:32:03+0000','children':[],'address':'Gr\u00e4nsv\u00e4gen 12B','timezone':'Etc\/GMT-1','control_level':'shared','billing_category':'owned_meter_consumption','generation':1,'tags':[],'box':'active','revoked':false,'metrics':['energy'],'type':'heat','consumption_stats':{'energy':{'month':{'count':57,'sum':3592320,'max':173000,'last':201709,'min':2000,'first':201301},'hour':{'first':null,'last':null,'sum':null,'max':null,'min':null,'count':0},'day':{'first':null,'last':null,'sum':null,'max':null,'min':null,'count':0}}},'cost_stats':{},'readings_stats':null,'has_active_complaints':false,'representation':null,'open_channel_ids':null,'on_hold':null,'last_sla_comment':null,'location':null,'meta_data':{},'meter_readers':[],'collection_window':5,'memo':null},{'_id':'5825c85920fe9b0061547253','ean':'735999666123123123','name':null,'holder':{'_id':'5543677f37c6b65f008b46e4','name':'Example account','username':'[email protected]'},'root':{'_id':'577fdd960c8a335c008b4669','holder':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','entity_type':'utility_provider'}},'assigner':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','username':'[email protected]','manager':{'_id':null}},'created':'2016-11-11T13:32:09+0000','children':[],'address':'Gr\u00e4nsv\u00e4gen 12B','timezone':'Etc\/GMT-1','control_level':'shared','billing_category':'owned_meter_consumption','generation':1,'tags':[],'box':'active','revoked':false,'metrics':['energy'],'type':'electricity','consumption_stats':{'energy':{'month':{'count':45,'sum':141604.36,'max':6488.2,'last':201709,'min':1759.64,'first':201401},'hour':{'first':null,'last':null,'sum':null,'max':null,'min':null,'count':0},'day':{'first':null,'last':null,'sum':null,'max':null,'min':null,'count':0}}},'cost_stats':{},'readings_stats':null,'has_active_complaints':false,'representation':null,'open_channel_ids':null,'on_hold':null,'last_sla_comment':null,'location':null,'meta_data':{},'meter_readers':[],'collection_window':5,'memo':null},{'_id':'5825c85d22c8aa00606b9dd5','ean':'1200004','name':null,'holder':{'_id':'5543677f37c6b65f008b46e4','name':'Example account','username':'[email protected]'},'root':{'_id':'577fdd960c8a335c008b466f','holder':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','entity_type':'utility_provider'}},'assigner':{'_id':'577fd0170c8a335c008b45fe','name':'Rob Harvey Utility Company','username':'[email protected]','manager':{'_id':null}},'created':'2016-11-11T13:32:13+0000','children':[],'address':'Gr\u00e4nsv\u00e4gen 12B','timezone':'Etc\/GMT-1','control_level':'shared','billing_category':'owned_meter_consumption','generation':1,'tags':[],'box':'active','revoked':false,'metrics':['energy'],'type':'cooling','consumption_stats':{'energy':{'month':{'count':33,'sum':902350,'max':92560,'last':201709,'min':9730,'first':201501},'hour':{'first':null,'last':null,'sum':null,'max':null,'min':null,'count':0},'day':{'first':null,'last':null,'sum':null,'max':null,'min':null,'count':0}}},'cost_stats':{},'readings_stats':null,'has_active_complaints':false,'representation':null,'open_channel_ids':null,'on_hold':null,'last_sla_comment':null,'location':null,'meta_data':{},'meter_readers':[],'collection_window':5,'memo':null}]}"; 

    var items = JsonConvert.DeserializeObject<ModelsClass.Rootobject>(json2); 
    foreach (ModelsClass.Rootobject value in items) 
    { 
     Console.WriteLine(value, items); 
    } 
    Console.ReadKey(); 
}