多对象序列化

Multiple objects serialization

我正在制作一个需要序列化多个对象的 ToDoList-Console 应用程序。 有 2 个任务 类:

我需要一种序列化和期望实现这些任务的方法,例如 WriteAndReadComplexTask,对于 类 这两个 tasks.json 不重写整个 tasks.json 文件,而是将其相加。这就是我的最终目标:

[
 {
    "SimpleTask": "do the dishes"
 }
 {
    "ComplexTask": "buy groceries"
      { "subtask": "bananas",
        "subtask": "apples"}
 }
 {
    "simple task": "do some coding"
 }
]

这并不难做到。但是我认为你是从不同的角度来解决这个问题的,我建议你尝试只使用 1 class 来处理这个问题,它已经包含了所有字段并使用了 1 个 todoitem 任务。这样可以节省时间和复杂的逻辑,否则您将来可能需要将项目从简单任务转换为复杂任务。

  1. 首先,你的JSON还是不正确。每个对象后都缺少逗号。

  2. 我建议将您的 JSON 更改为以下内容:

[
     {
        "name": "SimpleTask"
        "description": "do the dishes"
     },
     {
        "name": "Simple task",
        "description": "buy groceries",
         "subtasks":[ 
             {"name": "Simple task",
        "description": "buy groceries"},{.... repeat another item}]
     },
     {
         ..another item here 
     }
]
  1. 创建一个新的 class,它看起来像您 JSON 中的对象,如下所示:
public class TodoItem 
{
    public string name {get;set;}
    public string description {get;set;}
    public List<TodoItem> subtasks {get;set;}
}
  1. 现在在您的代码中加载文件并使用以下代码加载到 C#
var todoitems = JsonSerializer.Deserialize<List<TodoItem>>(jsonString);