2014-09-03 107 views
3

我試圖dezerialize數組,但我不斷遇到錯誤。類型不支持數組的反序列化

JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
Profiles thingy = jsonSerializer.Deserialize<Profiles>(fileContents); 

這是給我的錯誤代碼:

Type is not supported for deserialization of an array.

這是我的JSON的樣子:

[ 
{ 
    "Number": 123, 
    "Name": "ABC", 
    "ID": 123, 
    "Address": "ABC" 
} 
] 

回答

7

你只需要反序列化它的某種集合 - 例如,數組。畢竟,你的JSON 確實是代表一個數組,而不是一個單一的項目。簡短但完整的例子:

using System; 
using System.IO; 
using System.Web.Script.Serialization; 

public class Person 
{ 
    public string Name { get; set; } 
    public string ID { get; set; } 
    public string Address { get; set; } 
    public int Number { get; set; } 
} 

class Test 
{ 
    static void Main() 
    { 
     var serializer = new JavaScriptSerializer(); 
     var json = File.ReadAllText("test.json"); 
     var people = serializer.Deserialize<Person[]>(json); 
     Console.WriteLine(people[0].Name); // ABC 
    } 
} 
+0

非常感謝:D – user3478897 2014-09-03 21:56:48

5

的JSON是一個列表。 JSON中的方括號表示一個數組或對象列表。所以你需要告訴它返回一個對象列表:

JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); 
var profiles = jsonSerializer.Deserialize<List<Profiles>>(fileContents); 
+0

我想這樣做,但我得到一個錯誤說「System.Collections.Generic.List 」是一個「型」,而是使用類似「變量」 – user3478897 2014-09-03 21:53:06

+0

@ user3478897我假設Profiles是您定義的類。 – Donal 2014-09-03 22:01:39

+1

對不起,沒有細節。 – user3478897 2014-09-03 22:03:38