Serialize json — невозможно преобразовать объект типа «XXX» в тип «System.Collections.IEnumerable»

Пытаюсь сериализовать 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", "")

Изменить: данные, которые я возвращаю, имеют следующий формат в обоих запросах, до 3 тыс. Наборов каждый.

[[1579617389000,132],[1579617399000,136],[1579617409000,139],[1579617419000,137]]

Изменить: затем я хочу объединить оба (и в будущем их будет больше) для отправки в диаграммы Google. Я беру время 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».

У меня есть ощущение, что это должно быть так, как я вызываю сериализатор, но я не могу найти правильный синтаксис.


person Richard    schedule 25.01.2020    source источник
comment
Можете ли вы опубликовать небольшой пример вашего json (SolarResultsfound, UsageResultsfound)?   -  person CruleD    schedule 26.01.2020
comment
Спасибо @CruleD, я добавил больше деталей к вопросу   -  person Richard    schedule 26.01.2020


Ответы (1)


Извините, кажется, я сам ответил на свой вопрос. Добавляя больше пояснений, я подумал, можно ли объединить несколько наборов данных в одну и ту же диаграмму Google, и да, это так!

Созданы две таблицы данных, как показано ниже.

//setup DT for solar production
var dt1 = new google.visualization.DataTable();
dt1.addColumn('number', 'Date');
dt1.addColumn('number', 'Solar (watts)');
dt1.addRows(@GenResults);

//setup DT for usage
var dt2 = new google.visualization.DataTable();
dt2.addColumn('number', 'Date');
dt2.addColumn('number', 'Usage (watts)');
dt2.addRows(@UseResults);

Затем я объединил две таблицы данных в одно объединенное представление, и оно работает.

var data = google.visualization.data.join(dt1, dt2, 'full', [[0, 0]], [1], [1]);

Спасибо, Ричард.

person Richard    schedule 26.01.2020