VB.net JSON(多个数据)反序列化到列表框中

时间:2018-06-29 05:32:41

标签: json vb.net

我有一个包含1-100个数据数组的JSON响应。请查看JSON结果,如下所示:

[{
    "ts": 1529926023722.0,
    "val": {
        "channel_1": 253.0,
        "channel_2": 249.0
    }
}, {
    "ts": 1529926083770.0,
    "val": {
        "channel_1": 246.0,
        "channel_2": 249.0
    }
}, {
    "ts": 1529926143823.0,
    "val": {
        "channel_1": 246.0,
        "channel_2": 249.0
    }
}, {
    "ts": 1529926203874.0,
    "val": {
        "channel_1": 250.0,
        "channel_2": 255.0
    }
}]

JSON结果的类应为:

Public Class Val
    Public Property channel_1 As Double
    Public Property channel_2 As Double
End Class

Public Class JSON_result
    Public Property ts As Double
    Public Property val As Val
End Class

供您参考,“ ts”是unix时间,我需要将其转换为日期时间,并将其与Val(分别对应于channel_1和channel_2)一起插入列表框(以及图表)。

JSON_result最多具有100个数据,我需要它将具有unix-to-datetime转换的每个数据循环到图表中。

图表图形数据添加代码为:

ChartControl_module.Series("module_analog1").Points.Add(New DevExpress.XtraCharts.SeriesPoint(DateTime.Now, channel_1)) 

ChartControl_module.Series("module_analog2").Points.Add(New DevExpress.XtraCharts.SeriesPoint(DateTime.Now, channel_2)) 

我已经完成了unix到datetime的转换功能,效果很好。只是我无法根据相关的“ ts”提取channel_1和channel_2数据放入图表中。 :(

如何反序列化JSON结果的这些多个数据?

1 个答案:

答案 0 :(得分:0)

Imports System.Web.Script.Serialization ' for reading of JSON (+add the reference to System.Web.Extensions library)

我将拆分数组,以便可以搜索所需的任何一个。 然后,您可以获取这样的值:

Dim JSONDictionary = New JavaScriptSerializer().Deserialize(Of Dictionary(Of String, Object))(Array1_JSON)
Dim Time = JSONDictionary("ts")

或者,如果您想全部集中在一个地方:

Dim JSONDictionary = New JavaScriptSerializer().DeserializeObject(JSON) ' you get 4 items, with subitems, grab what you want like JSONDictionary(3)("ts")