簡體   English   中英

如何從反序列化JSON對象獲取值?

[英]How to get values from Deserialized JSON object?

我正在嘗試導入JSON,進行解析並能夠在我的整個應用程序中使用它。 例如,我想循環瀏覽並能夠打印出年份。 我將如何去做?

代碼

var result = await content.ReadAsStringAsync ();

try 
{
    List<RootObject> list = (List<RootObject>)JsonConvert.DeserializeObject<List<RootObject>>(result);

}

catch (Exception e) {
    Console.WriteLine (e);
}

JSON

{
    "ROWCOUNT": 3,
    "COLUMNS": [
        "YEARMFG",
        "MAKE",
        "MODEL",
        "ENGINE",
        "TOWLIMIT",
        "NOTE1",
        "NOTE2"
    ],
    "DATA": {
        "YEARMFG": [
            2012,
            2012,
            2012
        ],
        "MAKE": [
            "Chevrolet/GMC",
            "Chevrolet/GMC",
            "Chevrolet/GMC"
        ],
        "MODEL": [
            "Avalanche 1500 4WD",
            "Avalanche 1500 4WD",
            "Avalanche 1500 4WD"
        ],
        "ENGINE": [
            "5.3L V-8",
            "5.3L V-8",
            "5.3L V-8"
        ],
        "TOWLIMIT": [
            5000,
            5500,
            8000
        ],
        "NOTE1": [
            "3.08 axle ratio",
            "3.42 axle ratio",
            "3.42 axle ratio"
        ],
        "NOTE2": [
            "",
            "",
            "Cooling or other accessory package required "
        ]
    }
}

類別:

public class DATA
{
    public List<int> YEARMFG { get; set; }
    public List<string> MAKE { get; set; }
    public List<string> MODEL { get; set; }
    public List<string> ENGINE { get; set; }
    public List<int> TOWLIMIT { get; set; }
    public List<string> NOTE1 { get; set; }
    public List<string> NOTE2 { get; set; }
}

public class RootObject
{
    public int ROWCOUNT { get; set; }
    public List<string> COLUMNS { get; set; }
    public DATA DATA { get; set; }
}

假設您的對象和GetJson()僅返回JSON字符串:

var obj = JsonConvert.DeserializeObject<RootObject>(GetJSON());
foreach (var year in obj.DATA.YEARMFG)
{
    Console.WriteLine("Year: {0}", year);
}

哪個應該輸出(基於您的樣本數據):

Year: 2012
Year: 2012
Year: 2012

旁注:您不必反序列化為List<RootObject> RootObject應該是單個實體(因為它包裝了您的整個JSON數據)。 因此,只需將其反序列化為單個實例,然后訪問DATA屬性並在YEARMFG進行迭代YEARMFG

您正在反序列化List<RootObject> ,因此List中的每個元素都是一個RootObject 您可以在類中看到RootObject具有DATA屬性,該屬性包含YEARMFGList<string>

您應該能夠像這樣訪問list的項目:

list.DATA.YEARMFG將為您提供給定項目的年份列表。

如果要單獨顯示它們,可以遍歷列表:

foreach (var yr in list.DATA.YEARMFG)
{
    // handle individual year info here
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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