【发布时间】:2020-01-25 15:56:25
【问题描述】:
尝试使用以下方式序列化 json:
<JsonArray>
Public Class NumbersItem
Public Sub New(objTime As Long, objSolValue As Long, objUsageValue As Long)
DetectionTime = objTime
SolValue = objSolValue
UsageValue = objUsageValue
End Sub
Public ReadOnly Property DetectionTime As Long
Public ReadOnly Property SolValue As Long
Public ReadOnly Property UsageValue As Long
End Class
获取数据并转换:
'Get Solar Gen
Dim SolarResultsfound = VATWebClient.UploadString("https://XXXXXX.org/feed/data.json?id=" + SolarID + "&start=" + UNStartTime.ToString + "&end=" + UNEndTime.ToString + "&interval=1300", "")
'Get Usage
Dim UsageResultsfound = VATWebClient.UploadString("https://xxxxxx.org/feed/data.json?id=" + UsageID + "&start=" + UNStartTime.ToString + "&end=" + UNEndTime.ToString + "&interval=1300", "")
编辑:我返回的数据在两个请求中都采用以下格式,每个最多 3k 集。
[[1579617389000,132],[1579617399000,136],[1579617409000,139],[1579617419000,137]]
编辑:然后我想将两者结合起来(将来还会有更多)发送到谷歌图表。我从第一个结果中获取 unix 时间(第一列)和值(第二列),并且只从第二个结果中获取值列。
'Create an list from json results
Dim numbers As New List(Of NumbersItem)()
Dim jsonArrays = JArray.Parse(SolarResultsfound)
Dim jsonUsageArrays = JArray.Parse(UsageResultsfound)
For Each array As JArray In jsonArrays.Children()
For Each usage As JArray In jsonUsageArrays
numbers.Add(New NumbersItem(CType(array.First, Long), CType(array.Last, Long), CType(usage.Last, Long)))
Next
Next
然后我尝试使用以下内容进行序列化。
Dim jsonTxt As String = Newtonsoft.Json.JsonConvert.SerializeObject(numbers)
并得到以下错误
无法将“xxxxxx.NumbersItem”类型的对象转换为“System.Collections.IEnumerable”类型。
我感觉这一定是我调用序列化程序的方式,但我找不到正确的语法。
【问题讨论】:
-
你能发布一些你的 json 的简短示例(SolarResultsfound、UsageResultsfound)吗?
-
谢谢@CruleD,我已经为问题添加了更多细节
标签: vb.net jsonserializer