"port_list": {
"5985": {
"structinfo": "",
"protocol": "http",
"dbs": {
"DbSize": 0,
"Count": 0,
"Records": 0
},
"port": "5985",
"versions": [
"Microsoft-HTTPAPI : 2.0"
],
"ip": "10.122.5.154",
},
"135": {
"structinfo": "",
"protocol": "decrpc",
"dbs": {
"DbSize": 0,
"Count": 0,
"Records": 0
},
"port": "135",
"ip": "10.122.5.154",
"banner": "",
"time": "2019-05-14 20:50:09 +0800",
"port_state": "open",
"status": "success"
},
"137": {
"structinfo": "",
"netbios_name": "WIN-9PBV4405K7V",
"protocol": "netbios",
"dbs": {
"DbSize": 0,
"Count": 0,
"Records": 0
},
"port": "137",
"ip": "10.122.5.154",
"banner": "",
"time": "2019-05-14 20:25:35 +0800",
"port_state": "open",
"mac": "6c:0b:84:b8:14:31",
"status": "success"
},
"3389": {
"structinfo": "",
"protocol": "rdp",
"dbs": {
"DbSize": 0,
"Count": 0,
"Records": 0
},
"port": "3389",
"ip": "10.122.5.154",
"banner": "",
"time": "2019-05-14 20:40:56 +0800",
"port_state": "open",
"status": "success"
}
}请教,这样的Json串,用C#反序列化,对于结构均相同,只名称不同的每个端口,应该如何声明同一个类,能把所有端口的Json串都反序列化出来。

解决方案 »

  1.   

    复制这个json-》打开VS-》创建一个新类-》编辑-》选择性粘贴-》将json粘贴成类 
      

  2.   

    json转C#实体类 http://www.bejson.com/convert/json2csharp/
      

  3.   

    这个高级一些  选择性粘贴应该不好使.因为key是数字 所以 只能是dic<int,xxoo>类型.
      

  4.   


    dynamic obj = JsonConvert.DeserializeObject(json);
      

  5.   


    public class PortList
            {
            public Dictionary<string, dynamic> prot_list { get; set; }
            }public void GetPortList()
            {
                var strJson="";  //json字符串
                var json = JsonConvert.DeserializeObject<PortList>(strJson);
                foreach (var item in json.prot_list)
                {
                    Console.WriteLine(item.Key);  //端口号
                    Console.WriteLine(item.Value.structinfo);
                    Console.WriteLine(item.Value.protocol);
                    Console.WriteLine(item.Value.port);
                }
            }
      

  6.   

    Newtonsoft.Json 试试序列化与反序列化
      

  7.   

    字典,name为key,下面的对象为object值
      

  8.   

    反序列成dynamic 或者 去百度在线json转C#类