<关闭(原因:JSON字符串错误)>无法反序列化列表从有效的JSON

本文关键字:JSON 列表 反序列化 myObject 有效 关闭 原因 错误 字符串 | 更新日期: 2023-09-27 18:05:58

我正试图将JSON字符串反序列化到对象列表。json字符串是通过http://jsonlint.com/

验证的有效json。

这是字符串

[
{
    "Employee_OID": 18450,
    "First_Name": "ABDUL",
    "Last_Name": "RAJPUT"
},
{
    "Employee_OID": 22446,
    "First_Name": "ABDUL",
    "Last_Name": "KHAN"
}
]

之前,我通过以下代码成功地反序列化了单个对象

Employee emp = (new JavaScriptSerializer()).Deserialize<Employee>(hdfEmployees.Value);

但是现在当我试图用相同的代码反序列化一个对象列表

List<Employee> emp = (new JavaScriptSerializer()).Deserialize<List<Employee>>(hdfEmployees.Value);

显示以下错误

Invalid JSON primitive: <my json string>

我也尝试过IList和Employee[]代替List(正如另一个问题的答案所建议的),但没有用。

<关闭(原因:JSON字符串错误)>无法反序列化列表<myObject>从有效的JSON

它适合我:

public class Employee
{
    public int Employee_OID { get; set; }
    public string First_Name { get; set; }
    public string Last_Name { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        string json = @"[{""Employee_OID"": 18450,""First_Name"": ""ABDUL"",""Last_Name"": ""RAJPUT""},{""Employee_OID"": 22446,""First_Name"": ""ABDUL"",""Last_Name"": ""KHAN""}]";
        List<Employee> emp = (new JavaScriptSerializer()).Deserialize<List<Employee>>(json);
        Console.WriteLine(emp.First().First_Name);
    }
}

检查输入

您的错误没有连接到JavaScriptSerializer。我刚刚测试了以下代码:

string input = string.Join(Environment.NewLine, File.ReadAllLines("Input.txt"));
List<Employee> emp = (new JavaScriptSerializer()).Deserialize<List<Employee>>(input);

其中Input.txt包含您的样本输入,它工作得很好= emp是一个包含2个Employee对象的列表。

Employee类定义为

public class Employee
{
    public int Employee_OID { get; set; }
    public string First_Name { get; set; }
    public string Last_Name { get; set; }
}

你必须检查你的输入字符串,如果它真的匹配你的问题样本数据。