[英]How can I get multiple/nested class return values from deserializing json.net in unity?
一些背景:我的json數據來自查詢mysql數據庫的php腳本。 我有一個用於命令結果(例如成功或失敗)的類。 我還有另一個類,它將包含查詢的實際結果。
public class jsonResults {
public int success { get; set; }
public string message { get; set; }
public ArrayList resultArray { get; set; }
}
public class HeroDetails {
public int id { get; set; }
public string name { get; set; }
}
我認為我應該能夠遍歷jsonResults結果數組列表以填充新的HeroDetails,但是我似乎找不到方法。
示例json數據
{
"success": 1,
"message": "Data Available!",
"resultArray":[
{ "id": "26", "name": "Hero1" },
{ "id": "13", "name": "Hero2" },
{ "id": "1", "name": "Hero3" },
{ "id": "18", "name": "Hero4" }
]
}
該代碼使我可以訪問成功和消息,但找不到任何將數組結果放入列表的方法。
List<HeroDetails> heroList = new List<HeroDetails>();
jsonResults r = JsonConvert.DeserializeObject<jsonResults>(json));
Debug.Log("Success: " + r.success);
Debug.Log("Message: " + r.message);
你的數組列表有問題! 您可以使用json2csharp 。
public class ResultArray
{
public string id { get; set; }
public string name { get; set; }
}
public class RootObject
{
public int success { get; set; }
public string message { get; set; }
public List<T> resultArray { get; set; }
}
JSON響應可以包含通用數據,因此您需要通用結果類。
public class jsonResults<T> {
public int success { get; set; }
public string message { get; set; }
public List<T> resultArray { get; set; }
}
另外,您還必須知道從請求中反序列化所需的類型。
jsonResults<HeroDetails> r = JsonConvert.DeserializeObject<jsonResults<HeroDetails>>(json);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.