【发布时间】:2019-04-11 16:19:28
【问题描述】:
我正在尝试使用 firebase 为一个统一项目创建一个高分系统。要检索我使用 RESTCLIENT 的 JSON。我已经设法很好地上传了分数,但反序列化它们被证明是一个问题。
JSON = "{"UserName1":{"Name":"UN1","ScoreVal":"99/100"},"UserName2":{"Name":"UN2","ScoreVal":"100/100"}}"
[Serializable]
public class RootObject
{
public Score score { get; set; }
}
[Serializable]
public class Score
{
public string Name;
public string ScoreVal;
public Score(string name, string scoreVal)
{
this.Name = name;
this.ScoreVal = scoreVal;
}
}
理想的解决方案将遵循这种 JSON 格式:
{
"Level1":{
"User1":{
"Name":"User1",
"Score":"100/100"
},
"User2":{
"Name":"User2",
"Score":"100/100"
}
},
"Level2": {
"User1": {
"Name":"User1",
"ScoreVal":"99/100"
},
"User2": {
"Name":"User2",
"ScoreVal":"100/100"
}
}
}
我尝试过使用来自 unity、newtonsoft 和我自己的 jsonhelper 的 JsonUtility:
public static class JsonHelper2
{
public static T[] FromJson<T>(string json)
{
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);
return wrapper.Items;
}
public static string ToJson<T>(T[] array)
{
Wrapper<T> wrapper = new Wrapper<T>();
wrapper.Items = array;
return JsonUtility.ToJson(wrapper);
}
public static string ToJson<T>(T[] array, bool prettyPrint)
{
Wrapper<T> wrapper = new Wrapper<T>();
wrapper.Items = array;
return JsonUtility.ToJson(wrapper, prettyPrint);
}
[Serializable]
private class Wrapper<T>
{
public T[] Items;
}
}
当只有一个条目时我可以检索数据,但当有多个用户名时我无法获得分数。
【问题讨论】:
标签: c# json unity3d deserialization json-deserialization