将JSON数据流从文本文件加载到对象C#中

Cav*_*rob 1 c# serialization json poco

我正在使用Newtonsoft.Json.Linq,我想将数据加载到我定义的对象(或结构)中,并将对象放入列表或集合中.

目前我正在使用索引来提取名称的JSON属性.

filename = openFileDialog1.FileName;

StreamReader re = File.OpenText(filename);
JsonTextReader reader = new JsonTextReader(re);
string ct = "";

JArray root = JArray.Load(reader);
foreach (JObject o in root)
{
    ct += "\r\nHACCstudentBlogs.Add(\"" + (string)o["fullName"] + "\",\"\");";
}
namesText.Text = ct;
Run Code Online (Sandbox Code Playgroud)

该对象定义如下,有时JSON不包含属性的值:

class blogEntry
{
    public string ID { get; set; }
    public string ContributorName { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public string CreatedDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*lch 11

您可以使用JsonSerializer类将JSON流反序列化为实际对象.

var serializer = new JsonSerializer();
using (var re = File.OpenText(filename))
using (var reader = new JsonTextReader(re))
{
    var entries = serializer.Deserialize<blogEntry[]>(reader);
}
Run Code Online (Sandbox Code Playgroud)