簡體   English   中英

如何從統一反序列化json.net以獲得多個/嵌套的類返回值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM