【发布时间】:2019-11-11 23:56:28
【问题描述】:
我在 VB.Net 中使用以下代码来获取一组 JSON 格式的时间和温度数据,我将最终绘制图表。我想转换 JSON 数据,但我只能创建 jObject。在那之后,我迷路了。我承认,我有点新手!
Imports System.Collections.Generic
Imports System.IO
Imports System.Net
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Partial Class public_html_JSON
Inherits System.Web.UI.Page
Public jResults As JObject
Public rawresp As String
Public strStartTime As String = ""
Public strEndTime As String = ""
Public rangeMinutes As Long
Public debugText As String
Private Sub form1_Load(sender As Object, e As EventArgs) Handles form1.Load
Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader
Dim cstZone As TimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time")
Dim cstTime As DateTime = TimeZoneInfo.ConvertTimeFromUtc(DateAdd(DateInterval.Day, 0, DateAdd(DateInterval.Hour, 0, Now().ToUniversalTime)), cstZone)request =
Dim url As String = "https://[somesite]?method=queryList4Chart&device.id=17002&endTime=" + strEndTime + "&sensorNumber=-1&startTime=" + strStartTime
request = DirectCast(WebRequest.Create(url), HttpWebRequest)
response = DirectCast(request.GetResponse(), HttpWebResponse)
reader = New StreamReader(response.GetResponseStream())
rawresp = reader.ReadToEnd()
response = Nothing
jResults = JObject.Parse(rawresp)
但在我将它发送到客户端之前,我想:
- 使用“x, y”格式创建一个新的 JSON 字符串,timeArray 为“x”,dataArray[0] 为 “是”。
- 仅保留可被 5 整除的分钟数,从而减少数据点的数量。(即 5、10、15 等...)
这是我要转换的数据:
"dataArray":[
[
{
"value":13.4
},
{
"value":13.2
},
{
"value":13.2
},
{
"value":13.5
}
],
[
{
"value":2.8
},
{
"value":2.8
},
{
"value":2.9
},
{
"value":3.0
}
]
],
"sensorArray":[
"1.TP1(℃)",
"2.TP2(℃)"
],
"timeArray":[
"2019/11/10 14:00:41",
"2019/11/10 14:05:40",
"2019/11/10 14:07:40",
"2019/11/10 14:10:40"
]
}
我需要这种格式:
[
{
"x":2019/11/10 14:00:00,
"y":13.4
},
{
"x":2019/11/10 14:05:00,
"y":13.2
},
{
"x":2019/11/10 14:10:00,
"y":13.5
}
]
我该怎么做呢?
【问题讨论】:
-
一种方法是为输入数据设置一个类结构,反序列化为该结构,然后转换为与输出数据对应的类结构,然后对其进行序列化。
-
嗨,克雷格,我就是这么做的!比我计划或认为会有更多的工作,但它确实有效。现在渲染数据大约需要一半的时间。比在 Javascript 客户端完成所有工作所花费的 30 秒要好。感谢您为我指明正确的方向。我将在上面的问题中发布我的工作代码。