сделать модель для образца json в asp.net mvc - PullRequest
0 голосов
/ 15 декабря 2018

пожалуйста, посмотрите на этот пример json

Я хочу сделать модель для этого json в asp.net mvc:

 {
    "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, ["ID игрока"],[ "PlayerID"], [ "PlayerID"]]?

это тип массива?

как мне написать свойство для него?

это то, что я пытался:

  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];
        }
    }


}

можетпожалуйста исправьте мою ошибку?

что мне нужно написать вместо вопросительных знаков?

1 Ответ

0 голосов
/ 15 декабря 2018

Вам необходим список JToken для десериализации ваших ключевых данных PlayerPos.

Используйте структуру ниже класса для правильной десериализации вашего json.

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; }
}

Использование:

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();

Выход:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...