C# 使用UnityEngine.JsonUtility从Unity3d中的XDB REST反序列化JSON
我在使用Unity3d的JsonUtility类反序列化C#中influxDB的JSON响应时遇到问题 我使用json2csharp.com生成我的类。问题似乎是结果JSON字符串中有一个包含对象列表的列表 这是XDB的JSON结果示例:C# 使用UnityEngine.JsonUtility从Unity3d中的XDB REST反序列化JSON,c#,json,rest,unity3d,influxdb,C#,Json,Rest,Unity3d,Influxdb,我在使用Unity3d的JsonUtility类反序列化C#中influxDB的JSON响应时遇到问题 我使用json2csharp.com生成我的类。问题似乎是结果JSON字符串中有一个包含对象列表的列表 这是XDB的JSON结果示例: { "results": [ { "statement_id": 0, "series": [ { "name":
{
"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; }
}
公共类系列
{
公共字符串名称{get;set;}
公共列表列{get;set;}
公共列表值{get;set;}
}
公开课成绩
{
公共int语句_id{get;set;}
公共列表系列{get;set;}
}
公共类根对象
{
公共列表结果{get;set;}
}
我就是不知道如何处理值字段中的列表
运行程序时,我会得到以下日志输出(这不是示例JSON,而是来自我的数据库的实际结果,但格式相同):
InfluxResult(
(列表'1)结果=列表'1[
结果(
(Int32)语句_id=0;
(列表'1)系列=列表'1[
系列(
(字符串)name=“gf\U走廊\U温度”;
(列表'1)列=列表'1[
“时间”,
“价值”,
];
(列表'1)值=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;
}
[可序列化]
公开课系列
{
公共字符串名称;//{get;set;}
公共列表列;//{get;set;}
公共列表值;//{get;set;}
}
[可序列化]
公共类值集
{
公共列表值;
}
但这显然只是将值解析为空对象列表。但它们与“值集”列表的正确计数相对应
我是一个爱好级别的开发者,所以我可能会错过一些基本的东西。我猜json2csharp生成器会因为嵌套列表而失败?但是,应该如何处理这一问题,是否可以使用UnityEngine.JsonUtility?此外,“valueset”根据数据库的设置方式而不同,因此列列表表示值列表以及系列行中每个字段的类型(如果我有任何意义的话),因此我猜必须有某种通用对象,我将在稍后处理生成的问题
[
[
"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对象”。谢谢。我就是这么想的。找到了一个在unity中工作的涌入c#客户端,并最终使用了newtonsoft json,因为这是对客户端的依赖。
[
[
"2015-01-29T21:55:43.702900257Z",
2
],
[
"2015-01-29T21:55:43.702900257Z",
0.55
],
[
"2015-06-11T20:46:02Z",
0.64
]
]