我试图将从firebase数据库加载的一些json反序列化到一个自定义对象中,但我似乎不知道如何操作。
我有下面的类:
[Serializable]
public class MLResult : IEnumerable<List<int>>
{
public List<List<int>> results;
public MLResult(List<List<int>> results) {
this.results = results;
}
// implementation of the IEnumerable interface
public IEnumerator<List<int>> GetEnumerator() {
return results.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();
}
}
我使用以下命令将MLResult
对象保存到Firebase数据库:
public void SaveData() {
List<int> l1 = new List<int>{1,2,3,4,5};
List<int> l2 = new List<int>{6,7,8,9,10};
List<int> l3 = new List<int>{11,12,13,14,15};
MLResult r = new MLResult(new List<List<int>>{l1,l2,l3});
var json = JsonConvert.SerializeObject(r);
var DBTask = DBreference.Child("users").SetRawJsonValueAsync(json);
}
然后,我尝试使用以下命令加载它:
public void LoadData()
{
DBreference.Child("users").GetValueAsync().ContinueWith((DBTask => {
if (DBTask.IsCompleted)
{
DataSnapshot snapshot = DBTask.Result;
string data = snapshot.GetRawJsonValue();
Debug.Log(data);
MLResult res = JsonConvert.DeserializeObject<MLResult>(data);
//test by printing out each number
foreach (var item in res.results)
{
foreach (var x in item)
{
Debug.Log(x);
}
}
}
}));
}
当我在data
变量中打印原始json结果时,如下所示:[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]
然而,下面的部分没有做任何事情,如果我在序列化之前在SaveData方法中使用相同的代码,它会打印所有的单个列表项。
foreach(var item in res.results) {
foreach(var x in item) {
Debug.Log(x);
}
}
1条答案
按热度按时间0yg35tkg1#
请修改MLResult类。不要试图继承任何集合类或接口,如IEnumerable、列表、数组等。这只会带来很多不同的bug
测试计数器