多对象序列化
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 任务。这样可以节省时间和复杂的逻辑,否则您将来可能需要将项目从简单任务转换为复杂任务。
首先,你的JSON还是不正确。每个对象后都缺少逗号。
我建议将您的 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
}
]
- 创建一个新的 class,它看起来像您 JSON 中的对象,如下所示:
public class TodoItem
{
public string name {get;set;}
public string description {get;set;}
public List<TodoItem> subtasks {get;set;}
}
- 现在在您的代码中加载文件并使用以下代码加载到 C#
var todoitems = JsonSerializer.Deserialize<List<TodoItem>>(jsonString);
我正在制作一个需要序列化多个对象的 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 任务。这样可以节省时间和复杂的逻辑,否则您将来可能需要将项目从简单任务转换为复杂任务。
首先,你的JSON还是不正确。每个对象后都缺少逗号。
我建议将您的 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
}
]
- 创建一个新的 class,它看起来像您 JSON 中的对象,如下所示:
public class TodoItem
{
public string name {get;set;}
public string description {get;set;}
public List<TodoItem> subtasks {get;set;}
}
- 现在在您的代码中加载文件并使用以下代码加载到 C#
var todoitems = JsonSerializer.Deserialize<List<TodoItem>>(jsonString);