JSon строка возвращает ноль, используя DeserializeObject в C# Консольном приложении - PullRequest
0 голосов
/ 28 января 2020

Я следую этому образцу кода для десериализации строки json. Это работает нормально, однако, когда я пытаюсь сделать то же самое с моим Json, я получаю ноль. Ниже приведен мой исходный код в консольном приложении C# для десериализации строки json. Пожалуйста, помогите мне выяснить, что мне не хватает для десериализации.

public class Account
    {
        public string AgentTradeAssociation { get; set; }
        public string AccountNoAgentTradeAssociation { get; set; }
        public string Event { get; set; }
        public string AgentPoint { get; set; }
        public string BillTo { get; set; }
    }
    public class Program
    {   
        static void Main(string[] args)
        {
            string json = @"[{'F1':'AgentTradeAssociation','F2':'AccountNoAgentTradeAssociation','F3':'Event','F4':'AgentPoint','F5':'BillTo'},{'F1':'This be Corporation - TW','F2':'ACC-XYZ-R21RLF','F3':'XYZ Manufacturing 2018','F4':'Old (1)','F5':'This be Corp'}]";

            Account[] account = JsonConvert.DeserializeObject<Account[]>(json);

            Console.ReadLine();
        }
    }

Ответы [ 2 ]

1 голос
/ 28 января 2020

Во-первых, ваш JSON недействителен .

Этот факт в стороне, основанный на вашем определении Account JSON для Account объекта, должен выглядеть следующим образом :

{
    "AgentTradeAssociation": "string",
    "AccountNoAgentTradeAssociation": "string",
    "Event": "string",
    "AgentPoint": "string",
    "BillTo": "string"
}

Вы передаете эту схему на основе массива JSON:

{
  "F1": "AgentTradeAssociation",
  "F2": "NoAgentTradeAssociation",
   ....
}

, который не является типом Account, который вы определили в C#.

1 голос
/ 28 января 2020

Глядя на ваш JSON, у вас есть имя свойства и там значение в обратном направлении, например, F1 имеет значение AgentTradeAssociation. Для десериализации этого JSON вам понадобятся классы, которые выглядят примерно так:

public class Class1
{
    public string F1 { get; set; }
    public string F2 { get; set; }
    public string F3 { get; set; }
    public string F4 { get; set; }
    public string F5 { get; set; }
}
...