JSon string return null 在 C# 控制台应用程序中使用 DeserializeObject

JSon string return null using DeserializeObject in C# Console Application

我正在按照此 sample code 反序列化 json 字符串。它工作正常,但是,当我用我的 Json 尝试相同时,我得到了 null。下面是我在 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();
        }
    }

查看您的 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; }
}

第一,your JSON is invalid.

除此之外,根据您对 Account 的定义,Account 对象的 JSON 应该如下所示:

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

您正在根据 JSON 数组传入此模式:

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

这不是您在 C# 中定义的 Account 类型。