0

我正在尝试将 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 (正如另一个问题的答案所建议的那样),但没有用。

4

2 回答 2

2

您的错误未连接到JavaScriptSerializer. 我刚刚测试了以下代码:

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

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

如果它确实与您的问题示例数据匹配,您必须检查您的输入字符串。

于 2013-03-26T08:38:01.357 回答
2

这个对我有用:

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

所以检查你的输入

于 2013-03-26T08:39:13.357 回答