将JSON嵌套数组输出到VB.net对象

时间:2017-08-23 16:23:52

标签: arrays json vb.net

我正在将具有嵌套数组的JSON字符串反序列化到vb.net对象。 JSON是有效的,我可以对大部分内容进行反序列化。但是,我不清楚我的类属性是否正确编写以使用嵌套数组来完成此操作。我也得到一个奇怪的错误,注意" char类型的值不能转换为clsJson.datum,"当任何地方都没有char类型时(我可以看到!)。

我的班级:

Public Class clsJson
Public Property latitude As Double
Public Property minutely As Minly  
End Class

Public Class Minly                           
Public Property summary As String
Public Property icon As String
'***Public data As Datum()
Public Property data() As List(Of Datum)
End Class

Public Class Datum
Public Property time As Integer
Public Property summary As String
Public Property icon As String
Public Property precipIntensity As Double
Public Property precipProbability As Double
End Class

我的代码:

Imports Newtonsoft.Json

Public Class test_1a

Dim strJsontxt As String = Nothing
Dim myWeather As clsJson

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Try
        '***** paste strJson to textbox; final will download from web
        strJsontxt = TextBox3.Text
        txtInput.Text = strJsontxt

    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try

    Try
        myWeather = JsonConvert.DeserializeObject(Of clsJson)(strJsontxt) 'works            
        Console.WriteLine("Latitude:  " & myWeather.latitude) *'works*                        
        Console.WriteLine("Minutely_Summary:  " & myWeather.minutely.summary) *'works* 

        Console.WriteLine(myWeather.minutely.data)  *'returns*      ‘System.Collections.Generic.List`1[JSON_2.Datum]

        For Each data As Datum In strJsontxt  '*Error:* "Value of type char cannot be converted to clsJson.datum”
            Console.WriteLine("Min_data.toString:  " & myWeather.minutely.data.time)
        Next

        debugOutput(txtInput.Text)
    Catch ex As Exception
        MsgBox(ex.ToString)
        debugOutput(txtInput.Text)
    End Try

End Sub

End Class

我的JSON(已验证 - 确定):

{
"Latitude": 26.422518,
"Longitude" :  80.147245,
"minutely": {
"summary": "Partly cloudy for the hour.",
"icon": "partly-cloudy-day",
"data": [
  {
    "time": 1503329280,
    "precipIntensity": 0,
    "precipProbability": 0
  },
  {
    "time": 1503329340,
    "precipIntensity": 0,
    "precipProbability": 0
  },
  {
    "time": 1503329400,
    "precipIntensity": 0,
    "precipProbability": 0
  }
 ]
 }
 }

问题:

  1. 输出: Console.WriteLine(myWeather.minutely.data)'返回'System.Collections.Generic.List`1 [JSON_2.Datum]
    1. My For Each循环,我想读取minutely.data数组显示此错误:错误" char类型的值无法转换为clsJson.datum“
    2. 我确信我的clsJson中有一些乱序或丢失的东西。谁能提供任何帮助。我已经很好地研究了这个。在How to parse json array in vb.net?有类似的东西,但不完全相同。谢谢!

0 个答案:

没有答案