我正在尝试将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(正如另一个问题的回答所建议的那样),但没有用。
答案 0 :(得分:2)
您的错误未与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; }
}
如果输入字符串与您的问题样本数据真实匹配,则必须检查输入字符串。
答案 1 :(得分: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);
}
}
请检查输入