3
在我C# + WPF + .NET 4.5代碼,假設我有以下方式定義的Player
類:C#JSON文件到列表
public class Player {
public string FirstName;
public string LastName;
public List<int> Cells;
public string Level;
}
而且我有一個myobjects .json我在其中設法寫入(使用JSON.NET)這些對象的序列化集合(前兩個顯示在下面)的文件:
{
"FirstName": "Foo",
"LastName": "Fighter",
"Cells": [
1,
2,
3
],
"Level": "46"
}{
"FirstName": "Bar",
"LastName": "Baz",
"Cells": [
104,
127,
],
"Level": "D2"
}
我想要做的就是讀取文件,和反序列化這些對象和填充Player
的List
一個S:
using (Stream fs = openDialog.OpenFile())
using (StreamReader sr = new StreamReader(fs))
using (JsonTextReader jr = new JsonTextReader(sr)) {
while (jr.Read()) {
/* Find player in file */
Player p = /* Deserialize */
PlayerList.Add(p);
}
}
這看起來前途無量,但我收到以下錯誤: – mbaytas 2013-05-07 11:20:59
無法反序列化當前的JSON對象(例如{「名」 :「value」})轉換爲類型'System.Collections.Generic.List'1 [MyApp.Player]',因爲該類型需要JSON數組(例如[1,2,3])才能正確地反序列化。 要修復此錯誤,請將JSON更改爲JSON數組(例如[1,2,3])或更改反序列化類型,以使其成爲正常的.NET類型(例如,不是像整數這樣的基本類型,也不是集合類型如數組或列表),可以從JSON對象反序列化。 JsonObjectAttribute也可以添加到類型中,以強制它從JSON對象反序列化。 –
mbaytas
2013-05-07 11:22:22
@baytas首先,使用序列化代碼'File.WriteAllText ...'並將結果與你的結果進行比較。很可能你沒有形成一個正確的json數組。 (例如,你的問題中的json錯過了對象之間的逗號。) – I4V 2013-05-07 11:27:34