У меня проблемы с десериализацией ответа JSON от influenxDB в C # с использованием класса JsonUtility в Unity3d.
Я использовал json2csharp.com для создания своего класса. Кажется, проблема в том, что в результирующей строке JSON есть список со списком объектов.
Это пример результата JSON из InfluxDB:
{
"results": [
{
"statement_id": 0,
"series": [
{
"name": "cpu_load_short",
"columns": [
"time",
"value"
],
"values": [
[
"2015-01-29T21:55:43.702900257Z",
2
],
[
"2015-01-29T21:55:43.702900257Z",
0.55
],
[
"2015-06-11T20:46:02Z",
0.64
]
]
}
]
}
]
}
И это сгенерированныйкласс из json2csharp:
public class Series
{
public string name { get; set; }
public List<string> columns { get; set; }
public List<List<object>> values { get; set; }
}
public class Result
{
public int statement_id { get; set; }
public List<Series> series { get; set; }
}
public class RootObject
{
public List<Result> results { get; set; }
}
Я просто не могу понять, как обрабатывать List<List<object>>
в поле значений.
При запуске программы я получаю этот вывод журнала (этоне пример JSON, а фактический результат из моей БД, но форматирование такое же):
InfluxResult (
(List`1) results = List`1<Result> [
Result (
(Int32) statement_id = 0;
(List`1) series = List`1<Series> [
Series (
(String) name = "gf_hallway_temperature";
(List`1) columns = List`1<String> [
"time",
"value",
];
(List`1) values = Null;
),
];
),
];
)
Если я делаю, он разбирает на один уровень глубже:просто анализирует значения как список пустых объектов. Но они соответствуют правильному количеству списка «наборов значений».
Я - разработчик уровня хобби, поэтому я мог бы пропустить что-то фундаментальное здесь. Я предполагаю, что генератор json2csharp не работает из-за вложенных списков? Но как это сделать, возможно ли это с UnityEngine.JsonUtility? Кроме того, «набор значений» варьируется в зависимости от того, как настроена БД, поэтому список столбцов представляет список значений и тип каждого поля в строке в ряду, если Im имеет какой-то смысл, так что я предполагаю, что должны быть некоторыесвоего рода общий объект, и я буду решать проблемы, которые возникают позже.