Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将.json文件从URL下载到对象_C#_Json - Fatal编程技术网

C# 将.json文件从URL下载到对象

C# 将.json文件从URL下载到对象,c#,json,C#,Json,我需要将此URL下载到json,以便将其转换为对象 当我运行下面的代码时,字符串返回为“” 网址: 我做错了什么 注意:代码在VB.net中,对象在C#中(这不重要) 您应该反序列化为List类型,而不是a27baseball.Common.Objects.Oreo.DownloadJsonPowerball类型。因为json文件内容包含一个对象类型的数组 Dim result = DownloadAndSerializedJsonFromUrl(Of List(Of a27baseball.

我需要将此URL下载到json,以便将其转换为对象

当我运行下面的代码时,字符串返回为“”

网址:

我做错了什么

注意:代码在VB.net中,对象在C#中(这不重要)


您应该反序列化为
List
类型,而不是
a27baseball.Common.Objects.Oreo.DownloadJsonPowerball
类型。因为json文件内容包含一个对象类型的数组

 Dim result = DownloadAndSerializedJsonFromUrl(Of List(Of a27baseball.Common.Objects.Oreo.DownloadJsonPowerball))("https://data.ny.gov/resource/5xaw-6ayf.json")

您应该反序列化为
List
类型,而不是
a27baseball.Common.Objects.Oreo.DownloadJsonPowerball
类型。因为json文件内容包含一个对象类型的数组

 Dim result = DownloadAndSerializedJsonFromUrl(Of List(Of a27baseball.Common.Objects.Oreo.DownloadJsonPowerball))("https://data.ny.gov/resource/5xaw-6ayf.json")
publicstaticvoidjson()
{
字符串url=”https://data.ny.gov/resource/d6yy-54nr.json";
WebRequest=WebRequest.Create(url);
网络回复;
reply=request.GetResponse();
StreamReader returninfo=新的StreamReader(reply.GetResponseStream());
字符串getinfo=returninfo.ReadToEnd();
List Info=Newtonsoft.Json.JsonConvert.DeserializeObject(getinfo);
foreach(信息中的var信息)
{
}
公开课抽签
{
公共日期时间绘制时间{get;set;}
公共字符串中奖号码{get;set;}
公共字符串乘法器{get;set;}
}
我试过这样做,也许会有帮助。

publicstaticvoidjson()
{
字符串url=”https://data.ny.gov/resource/d6yy-54nr.json";
WebRequest=WebRequest.Create(url);
网络回复;
reply=request.GetResponse();
StreamReader returninfo=新的StreamReader(reply.GetResponseStream());
字符串getinfo=returninfo.ReadToEnd();
List Info=Newtonsoft.Json.JsonConvert.DeserializeObject(getinfo);
foreach(信息中的var信息)
{
}
公开课抽签
{
公共日期时间绘制时间{get;set;}
公共字符串中奖号码{get;set;}
公共字符串乘法器{get;set;}
}
我试过这样做,也许会有帮助。

100%正确答案:

我缺少这一行代码:

   ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType)
最终代码:

   Private Function DownloadAndSerializedJsonFromUrl(Of T As New)(ByVal url As String) As T
        Using w = New WebClient()
            Dim json_data = String.Empty

            Try
                ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType)
                json_data = w.DownloadString(url)
            Catch __unusedException1__ As Exception
                Response.Write(__unusedException1__.ToString())
            End Try

            Return If(Not String.IsNullOrEmpty(json_data), JsonConvert.DeserializeObject(Of T)(json_data), New T())
        End Using
    End Function
JSON数据不在字符串中,我可以用JSONConverDeserializeObject方法转换它

谢谢大家

有助于找到答案的文章:

答案100%正确:

我缺少这一行代码:

   ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType)
最终代码:

   Private Function DownloadAndSerializedJsonFromUrl(Of T As New)(ByVal url As String) As T
        Using w = New WebClient()
            Dim json_data = String.Empty

            Try
                ServicePointManager.SecurityProtocol = CType(3072, SecurityProtocolType)
                json_data = w.DownloadString(url)
            Catch __unusedException1__ As Exception
                Response.Write(__unusedException1__.ToString())
            End Try

            Return If(Not String.IsNullOrEmpty(json_data), JsonConvert.DeserializeObject(Of T)(json_data), New T())
        End Using
    End Function
JSON数据不在字符串中,我可以用JSONConverDeserializeObject方法转换它

谢谢大家

有助于找到答案的文章:


json_数据的确切值是多少(在
即时窗口中选中)?好的,很抱歉,现在我看到了此错误:
System.Net.WebException:基础连接已关闭:发送时发生意外错误。-->System.IO.IOException:无法从传输连接读取数据:现有连接已被远程主机强制关闭。-->System.Net.Sockets.SocketException:
An existin远程主机在上强行关闭了g连接,因此可能是他们的网站阻止了我调用它?他们可能阻止了您的
UserAgent
或IP地址。请尝试更改
UserAgent
或从其他IP地址运行代码。让我看看我能想出什么办法。也许我必须从N的IP地址调用它纽约?我通过他们的网站获得了一个API密钥,现在我似乎找不到如何将其添加到密钥中以传递它?json_数据的确切值是多少(签入
即时窗口
)?好的,很抱歉,现在我看到了此错误:
System.Net.WebException:基础连接已关闭:发送时发生意外错误。-->System.IO.IOException:无法从传输连接读取数据:现有连接已被远程主机强制关闭。-->System.Net.Sockets.SocketException:
An existin远程主机在上强行关闭了g连接,因此可能是他们的网站阻止了我调用它?他们可能阻止了您的
UserAgent
或IP地址。请尝试更改
UserAgent
或从其他IP地址运行代码。让我看看我能想出什么办法。也许我必须从N的IP地址调用它纽约?我通过他们的网站获得了一个API密钥,现在我似乎找不到如何将其添加到密钥中以传递它?它在这一行失败
reply=request.GetResponse()
出现错误:
System.Net.WebException:基础连接已关闭:发送时发生意外错误。-->System.IO.IOException:无法从传输连接读取数据:现有连接已被远程主机强制关闭。-->System.Net.Sockets.SocketException:现有连接已关闭远程主机在System.Net.Sockets.Socket.Receive(字节[]缓冲区、Int32偏移量、Int32大小、SocketFlags和SocketFlags)处完全关闭
。你是如何解决这一问题的?这很奇怪,我没有收到任何错误。可能在你的项目中,你同时打开了另一个连接,或者你无法访问该站点中的json数据。让我稍后再试。我在工作和家中都尝试过,但都失败了:/我发布了我的直接答案。谢谢你的帮助!该站点失败了e
reply=request.GetResponse()
出现错误:
System.Net.WebException:基础连接已关闭:发送时发生意外错误。-->System.IO.IOException:无法从传输连接读取数据:现有连接已被远程主机强制关闭。-->System.Net.Sockets.SocketException:现有连接已关闭关闭