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>

Listの代わりにIListとEmployee[]も試しましたが(別の質問への回答で示唆されています)、役に立ちませんでした。

4

2 に答える 2

2

エラーはに接続されていませんJavaScriptSerializer。次のコードをテストしました。

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

ここInput.txtにサンプル入力が含まれていて、問題なく機能します= 2つのオブジェクトempを含むリストです。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 に答える