我有一个包含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结果的这些多个数据?
答案 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")