首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从反序列化的JSON对象中获取值?

如何从反序列化的JSON对象中获取值?
EN

Stack Overflow用户
提问于 2015-02-06 19:58:56
回答 2查看 5K关注 0票数 0

我正在尝试导入JSON,解析它,并能够在我的应用程序中使用它。例如,我想通过循环和能够打印出这些年。我该怎么做?

代码语言:javascript
复制
var result = await content.ReadAsStringAsync ();

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

}

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

JSON

代码语言:javascript
复制
{
    "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 "
        ]
    }
}

类:

代码语言:javascript
复制
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; }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-06 20:11:33

假设您的对象和GetJson()只返回JSON字符串:

代码语言:javascript
复制
var obj = JsonConvert.DeserializeObject<RootObject>(GetJSON());
foreach (var year in obj.DATA.YEARMFG)
{
    Console.WriteLine("Year: {0}", year);
}

其中应该输出(基于您的样本数据):

代码语言:javascript
复制
Year: 2012
Year: 2012
Year: 2012

附带注意:您不必反序列化为List<RootObject>RootObject应该是一个单独的实体(因为它封装了整个JSON数据)。因此,只需将其反序列化为单个实例,然后访问DATA属性并在YEARMFG上迭代。

票数 4
EN

Stack Overflow用户

发布于 2015-02-06 20:12:39

您正在反序列化一个List<RootObject>,因此List中的每个元素都是一个RootObject。您可以在类中看到RootObject有一个DATA属性,该属性包含YEARMFG的一个List<string>

您应该能够访问list中的项,如下所示:

list.DATA.YEARMFG会给出一个给定项目的年份列表。

如果您想单独显示它们,可以循环遍历列表:

代码语言:javascript
复制
foreach (var yr in list.DATA.YEARMFG)
{
    // handle individual year info here
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28373752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档