使用UnityEngine从Unity3d中的InfluxDB REST反序列化JSON.JsonUtility



我在使用Unity3d的JsonUtility类从C#中的influxDB中取消JSON响应时遇到问题。

我使用json2csharp.com来生成我的类。问题似乎是在结果JSON字符串中有一个带有对象列表的List。

这是InfluxDB:的JSON结果示例

{
"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,而是我的DB的实际结果,但格式相同(:

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;
),
];
),
];
)

如果我这样做的话,它会解析更深一层:

[Serializable]
public class Series
{
public string name;// { get; set; }
public List<string> columns; // { get; set; }
public List<ValueSet> values; // { get; set; }
}
[Serializable]
public class ValueSet
{
public List<object> values;
}

但这显然只是将值解析为一个空对象列表。但它们对应于"值集"列表的正确计数。

我是一个爱好级别的开发人员,所以我可能会错过一些基本的东西。我猜json2csharp生成器由于嵌套列表而失败了?但是该如何处理呢?使用UnityEngine是否可行。JsonUtility?此外,"值集"根据DB的设置方式而有所不同,因此列列表表示值列表和行中每个字段的类型,如果我有任何意义的话,所以我想一定有某种通用对象,我将处理稍后生成的问题。

[
[
"2015-01-29T21:55:43.702900257Z",
2
],
[
"2015-01-29T21:55:43.702900257Z",
0.55
],
[
"2015-06-11T20:46:02Z",
0.64
]
]

无法由JSONUtility反序列化。使用像Newtonsoft JSON这样的专用库来遍历"JSON对象"。

最新更新