C# 反序列化shodan数据

C# 反序列化shodan数据,c#,shodan,C#,Shodan,我在反序列化从Shodan那里得到的数据时遇到问题。下面是我从json2csharp获得的类,我试图创建一个匹配数组并循环它们。到目前为止,我似乎已经尝试了除工作阵列以外的所有方法。数据本身作为根与它们的对象相匹配,这些对象包含具有其自身数据的位置等,下面我略作删减。 这是我的错误: 无法将当前JSON对象(例如{name:value})反序列化为类型“Shodan.Match[]”,因为类型requ 使用JSON数组(例如[1,2,3])进行正确的反序列化 var data = JsonCon

我在反序列化从Shodan那里得到的数据时遇到问题。下面是我从json2csharp获得的类,我试图创建一个匹配数组并循环它们。到目前为止,我似乎已经尝试了除工作阵列以外的所有方法。数据本身作为根与它们的对象相匹配,这些对象包含具有其自身数据的位置等,下面我略作删减。 这是我的错误: 无法将当前JSON对象(例如{name:value})反序列化为类型“Shodan.Match[]”,因为类型requ 使用JSON数组(例如[1,2,3])进行正确的反序列化

var data = JsonConvert.DeserializeObject<Match[]>(allData);

{"matches": [{"product": "product", "hash": 0, "ip": 123123, "isp": "Verizon Internet Services"}], "total": 1}


public class Location
{
    public string city { get; set; }
    public string region_code { get; set; }
    public object area_code { get; set; }
    public double longitude { get; set; }
    public string country_code3 { get; set; }
    public double latitude { get; set; }
    public string postal_code { get; set; }
    public object dma_code { get; set; }
    public string country_code { get; set; }
    public string country_name { get; set; }
}

public class Options
{
}

public class Shodan
{
    public string crawler { get; set; }
    public string id { get; set; }
    public string module { get; set; }
    public Options options { get; set; }
}

public class Match
{
    public int hash { get; set; }
    public int ip { get; set; }
    public string isp { get; set; }
    public string transport { get; set; }
    public string data { get; set; }
    public string asn { get; set; }
    public int port { get; set; }
    public List<string> hostnames { get; set; }
    public Location location { get; set; }
    public DateTime timestamp { get; set; }
    public List<string> domains { get; set; }
    public string org { get; set; }
    public object os { get; set; }
    public Shodan _shodan { get; set; }
    public string ip_str { get; set; }
    public string product { get; set; }
}

public class RootObject
{
    public List<Match> matches { get; set; }
    public int total { get; set; }
}

您可以创建另一个类,如

var allData = 
{"matches": [{"product": "product", "hash": 0, "ip": 123123, "isp": "Verizon Internet Services"}], "total": 1}

public class MyMatches {
    public Match[] matches {get; set;}
}
然后在反序列化程序中使用它。 var data=JsonConvert.DeserializeObjectallData

这是因为您提供的JSON代码示例是正确的

更正

刚刚看到了RootObject类。
使用它。

该代码是什么样子的?我试过使用var data=JsonConvert.DeserializeObjectallData;但它的工作方式不如不创建数组,但第一个数组崩溃,第二个只打印Class.RootObjectCode如下所示。我有一段时间没有登录,也不知道你问了一个问题。var data=JsonConvert.DeserializeObjectallData;{匹配项:[{产品:产品,哈希:0,ip:123123,isp:Verizon Internet Services}],总计:1}