C#JSON文件到列表中

mba*_*tas 5 c# json json.net

在我的C# + WPF + .NET 4.5代码中,假设我已按Player以下方式定义了一个类:

public class Player {
  public string FirstName;
  public string LastName;
  public List<int> Cells;
  public string Level;
}
Run Code Online (Sandbox Code Playgroud)

我有一个myobjects.json文件,我在其中设法编写(使用JSON.NET)这些对象的序列化集合(前两个如下所示):

{
  "FirstName": "Foo",
  "LastName": "Fighter",
  "Cells": [
    1,
    2,
    3
  ],
  "Level": "46"
}{
  "FirstName": "Bar",
  "LastName": "Baz",
  "Cells": [
    104,
    127,
  ],
  "Level": "D2"
}
Run Code Online (Sandbox Code Playgroud)

我想这样做是为了读取文件,和反序列化这些对象和填充ListPlayerS:

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

I4V*_*I4V 19

无需逐项阅读.

string json = File.ReadAllText("myobjects.json");
var playerList = JsonConvert.DeserializeObject<List<Player>>(json);
Run Code Online (Sandbox Code Playgroud)

您可以使用此代码将播放器列表写入文件

File.WriteAllText("myobjects.json", JsonConvert.SerializeObject(playerList));
Run Code Online (Sandbox Code Playgroud)

  • 只是为了完成:对象必须包含在 [ ] 中,所以它是一个数组,并且对象必须用逗号分隔 [{"firstName":"value1"},{"firstName":"value1"}] (2认同)