【发布时间】:2020-02-24 13:09:56
【问题描述】:
我正在尝试创建一个 Rssfeed 阅读器,它将有关播客的信息保存到 JSON 文件中,但我在序列化和反序列化到该文件时遇到了问题。
我意识到关于这个主题还有其他线索,但我无法掌握或理解如何将其应用于我的代码或它背后的推理。
所以我有一些代码可以在文件不存在时创建一个文件,并将 JSON 数据写入其中,如下所示:
public void SaveFile(Podcast podcast)
{
try
{
JsonSerializer serializer = new JsonSerializer();
if(!File.Exists(@"C: \Users\Kasper\Desktop\Projektuppgift\Projektuppgift - Delkurs2\Projektet\Projektet\bin\Debug\podcasts.json"))
{
string json = JsonConvert.SerializeObject( new { Podcast = podcast });
StreamWriter sw = File.CreateText(@"C:\Users\Kasper\Desktop\Projektuppgift\Projektuppgift-Delkurs2\Projektet\Projektet\bin\Debug\podcasts.json");
using (JsonWriter writer = new JsonTextWriter(sw))
{
serializer.Serialize(writer, json);
}
}
else
{
var filepath = @"C:\Users\Kasper\Desktop\Projektuppgift\Projektuppgift-Delkurs2\Projektet\Projektet\bin\Debug\podcasts.json";
var jsonData = File.ReadAllText(filepath);
var podcasts = JsonConvert.DeserializeObject<List<Podcast>>(jsonData) ?? new List<Podcast>();
podcasts.Add(podcast);
jsonData = JsonConvert.SerializeObject(new {PodcastList = podcasts });
File.WriteAllText(filepath, jsonData);
}
}
catch (Exception ex)
{
Console.WriteLine("IO Exception ", ex.Message);
}
}
我无法从这个文件中反序列化并向其中添加一个对象。有没有更简单的方法可以向 JSON 文件添加更多数据,还是我遗漏了什么?
Podcast 类如下所示:
public class Podcast
{
public string url { get; set; }
public string name { get; set; }
public int updateInterval { get; set; }
public string category { get; set; }
//public Category category = new Category();
public List<Episode> episodes { get; set; }
public Podcast(string url, string name, Category category, List<Episode> episodes, int updateInterval)
{
this.url = url;
this.name = name;
this.category = category.name;
this.episodes = episodes;
this.updateInterval = updateInterval;
}
public Podcast(Podcast p)
{
this.url = p.url;
this.name = p.name;
this.category = p.category;
this.episodes = p.episodes;
this.updateInterval = p.updateInterval;
}
}
【问题讨论】:
-
new { Podcast = podcast })-- 你可能想在那里创建一个新的List<Podcast>,而不是一个具有单个Podcast属性的新匿名对象。
标签: c# json serialization json.net json-deserialization