解决 JsonConvert.DeserializeObject System.NullReferenceException

史努比

新成员
已加入
2020年6月18日
留言内容
3
编程经验
Beginner
大家好。
我正在尝试从站点将动态json下载到var Vjson。
反序列化它并向控制台显示一些内容。
我不知道我在做什么错。我收到NullReferenceException错误,但是我确定有数据。

C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using Newtonsoft.Json;
//using ReadJSONusingCsharp.Models;
using System.Data.Common;
using System.Threading;

namespace jsonCmd0003
{
    class Program
    {
        static void Main(string[] args)
        {

          
                var client = new WebClient();
                var Vjson = client.DownloadString(Some URL);
                dynamic Post = JsonConvert.DeserializeObject( Vjson);
                foreach (var item in Post.Match)  //loop through class Post Match error System.NullReferenceException
            {

                Console.WriteLine("{0} {1} \n", item.ip_str, item.port);
            }
          

               Console.ReadKey();

            }
    }
}


这个班是

C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace jsonCmd0003
{


    class Post
 
    {

        public class 地点
        {

            public string city { get; set; }
            public string region_code { get; set; }
            public int? 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 int? 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 bool ptr { get; set; }
            public string id { get; set; }
            public string module { get; set; }
            public Options options { get; set; }

        }

        public class AngularJS
        {

            public IList<string> categories { get; set; }

        }

        public class Components
        {

            public AngularJS AngularJS { get; set; }

        }

        public class Http
        {

            public int? robots_hash { get; set; }
            public IList<object> redirects { get; set; }
            public object securitytxt { get; set; }
            public string title { get; set; }
            public int? sitemap_hash { get; set; }
            public string robots { get; set; }
            public object favicon { get; set; }
            public string host { get; set; }
            public string html { get; set; }
            public string location { get; set; }
            public Components components { get; set; }
            public object securitytxt_hash { get; set; }
            public string server { get; set; }
            public string sitemap { get; set; }
            public int html_hash { get; set; }
            public string waf { get; set; }

        }

        public class Match
        {

            public int hash { get; set; }
            public object 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 IList<string> hostnames { get; set; }
            public 地点 location { get; set; }
            public DateTime timestamp { get; set; }
            public IList<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 string devicetype { get; set; }
            public Http http { get; set; }
            public string title { get; set; }
            public IList<string> tags { get; set; }
            public IList<string> cpe { get; set; }

        }

        public IList<Match> matches { get; set; }
        public int total { get; set; }

    }

    

}

我究竟做错了什么 ?
任何帮助,将不胜感激
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
Use your debugger. Is Post null? Is Post.Match null?
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
Also, looking at your class, Post has a matches member, not Match.
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
Any particular reason why you are using a dynamic type from the JSON converter instead of a definite typed Post?
 
最佳 底部