<关闭(原因: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(正如另一个问题的答案所建议的),但没有用。
它适合我:
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; }
}
你必须检查你的输入字符串,如果它真的匹配你的问题样本数据。