![](/img/trans.png)
[英]System.NotSupportedException trying to deserialize Vector3 from JSON in Unity3d/Oculus
[英]"NullReferenceException" in Unity3D when trying deserialize data from JSON
我需要從 json 文件中獲取一些數據,我已經把它放到名為 dataAsJson 的字符串中,在調試時它看起來像這樣:
{\r\n\t\"question\":\r\n\t[\r\n\t\t{\r\n\t\t\"text\":
\"głośniki\",\r\n\t\t\"correct\": \"speaker\",\r\n\t\t\"answer1\":
\"speaker1\",\r\n\t\t\"answer2\": \"speaker2\",\r\n\t\t\"answer3\":
\"speaker3\"\r\n\t\t},\r\n\t\t{\r\n\t\t\"text\":
\"pustynia\",\r\n\t\t\"correct\": \"desert\",\r\n\t\t\"answer1\":
\"desert1\",\r\n\t\t\"answer2\": \"desert2\",\r\n\t\t\"answer3\":
\"deser3\"\r\n\t\t},\r\n\t\t{\r\n\t\t\"text\":
\"rycerz\",\r\n\t\t\"correct\": \"knight\",\r\n\t\t\"answer1\":
\"knight1\",\r\n\t\t\"answer2\": \"knight2\",\r\n\t\t\"answer3\":
\"knight3\"\r\n\t\t}\r\n\t]\r\n}
然后我使用 JsonUtility.FromJson(dataAsjJson) 這是我的對象類:
public class Question
{
public string text { get; set; }
public string correct { get; set; }
public string answer1 { get; set; }
public string answer2 { get; set; }
public string answer3 { get; set; }
}
public class RootObject
{
public List<Question> questions { get; set; }
}
正如您所看到的,json 主體只是帶有數組的“問題”。 在 Debug.log(dataAsJson) 上,它看起來正常:
{
"question":
[
{
"text": "głośniki",
"correct": "speaker",
"answer1": "speaker1",
"answer2": "speaker2",
"answer3": "speaker3"
},
{
"text": "pustynia",
"correct": "desert",
"answer1": "desert1",
"answer2": "desert2",
"answer3": "deser3"
},
{
"text": "rycerz",
"correct": "knight",
"answer1": "knight1",
"answer2": "knight2",
"answer3": "knight3"
}
]
}
我需要成功地將它轉換為 C# 對象。
正如 Amy 在評論中提到的,您的 C# 類結構與您的 JSON 不匹配,我使用http://json2csharp.com/因為它准確且快速。 確保將 [Serializable] 放在每個類的上方,以便我們可以將數據結構或對象狀態轉換為 Unity 可以存儲和重建的格式,請在此處閱讀更多內容。 最后,我會避免在這種結構中使用 getter 和 setter,它會導致序列化問題,並且 Unity 建議使用字段來代替。
[Serializable]
public class Question
{
public string text;
public string correct;
public string answer1;
public string answer2;
public string answer3;
}
[Serializable]
public class RootObject
{
public List<Question> question;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.