首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在asp.net mvc中为json示例建立一个模型

在asp.net mvc中为json示例建立一个模型
EN

Stack Overflow用户
提问于 2018-12-15 10:20:13
回答 1查看 67关注 0票数 0

请看这个json样品

我想在asp.net mvc中为这个json建立一个模型:

代码语言:javascript
复制
 {
    "MatchStat":{
        {
            "Corner":[10,3], 
            "Offside":[2,1], 
        }
    },

    "FirstTeamArrange":{ 
        "Tactic":"4-4-2",
        "PlayerPos":[0,["PlayerID"],["PlayerID"],["PlayerID"]]
    }
    "SecondTeamArrange":{ 
        "Tactic":"4-4-2",
        "PlayerPos":[0,["PlayerID"],["PlayerID"],["PlayerID"]]
    }

}

什么是[0,"PlayerID","PlayerID",“PlayerID”?)

它是一种数组吗?

我如何为它编写属性?

这就是我试过的:

代码语言:javascript
复制
  public class MatchModel
{
    public TeamArrange FirstTeamArrange { get; set; }
    public TeamArrange SecondTeamArrange { get; set; }
    public MatchStat Stat { get; set; }

    public MatchModel()
    {

    }


    public class TeamArrange
    {
        public String Tactic { get; set; }

        public string[,,] PlayerPos { get; set; }????????????????????????????

        public TeamArrange()
        {
            Tactic = "";
            PlayerPos=???????????????????????????

        }

    }
    public class MatchStat
    {
        public int[] Corner { get; set; }
        public int[] Offside { get; set; }

        public MatchStat()
        {
            Corner=new int[2];
            Offside=new int[2];
        }
    }


}

你能纠正我的错误吗?

我需要写什么而不是问号?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-15 10:45:02

您需要一个JToken列表来反序列化PlayerPos密钥数据。

使用下面的类结构可以正确地反序列化您的json。

代码语言:javascript
复制
class Root
{
    public Dictionary<string, List<int>> MatchStat { get; set; }
    public TeamArrange FirstTeamArrange { get; set; }
    public TeamArrange SecondTeamArrange { get; set; }
}

class TeamArrange
{
    public string Tactic { get; set; }
    public List<JToken> PlayerPos { get; set; }
}

使用:

代码语言:javascript
复制
Root root = JsonConvert.DeserializeObject<Root>(json);

foreach (var item in root.FirstTeamArrange.PlayerPos) //foreach (var item in root.SecondTeamArrange.PlayerPos)
{
    if (item.Type == JTokenType.Integer)
        Console.WriteLine(item.Value<int>());
    else
        if (item.Type == JTokenType.Array)
        {
            var arr = item.ToObject<string[]>();

            foreach (var innerItem in arr)
                Console.WriteLine(innerItem);
        }
}

Console.ReadLine();

输出:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53791439

复制
相关文章

相似问题

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