c# - C# 使用 JSON 进行序列化
问题描述
我有以下课程:
public class Employee
{
public string Name { get; set; }
public int Age{ get; set; }
public Employee(string name, int age)
{
Name = name;
Age = age;
}
public override string ToString()
{
return string.Format("{0},{1}", Name, Age);
}
}
现在在另一个类中,我想编写一个 .json 文件来序列化 Employee 类
public class WriteFile
{
public void WriteInFile(List<Employee> list)
{
string filePath="File.json";
var serializer = JsonSerializer.Create();
using (var w = new StreamWriter(filePath)
{
using (JsonTextWriter writer = new JsonTextWriter(w))
{
foreach (Employee item in list)
{
string s = JsonConvert.SerializeObject(item, Formatting.Indented);
serializer.Serialize(writer, s);
}
}
w.Close();
}
}
}
在节目课
class Program
{
private static void Main(string[] args)
{
List<Employee> listOfEmployees = new List<Employee>();
listOfEmployees.Add(new Employee("Susan", 34 ));
listOfEmployees.Add(new Employee("Jack", 50));
listOfEmployees.Add(new Employee("Sally", 25));
WriteFile write = new WriteFile();
write.WriteInFile(listOfEmployees);
}
}
输出是:
"{\r\n \"Name\": \"Susan\",\r\n \"Age\": 34\r\n}""{\r\n \"Name\": \"Jack\",\r\n \"Age\": 50\r\n}""{\r\n \"Name\": \"Sally\",\r\n \"Age\": 25\r\n}"
格式似乎无法正常工作。我想让每个名字和年龄都在一个新的行上,比如:
"Name": "Susan", "Age": 34
等等。这可能吗?
解决方案
JSON 仅支持一个顶级对象或数组。要序列化集合,请序列化集合本身。这将创建一个包含元素的有效 JSON 数组。
public void WriteInFile(IEnumerable<Employee> employees)
{
var json = JsonConvert.SerializeObject(employees, Formatting.Indented);
File.WriteAllText("employees.json", json);
}
推荐阅读
- python - Python:ValueError:无法将字符串转换为浮点数:读取输入文件以应用随机森林时“隔离”
- php - 从 xmlparser 访问 xml 属性
- azure - 带有触发计时器的 Azure Functions 不在监视器下显示日志
- python-3.x - python bdd框架:如何在步骤前后执行代码
- reactjs - this.state 中的额外未定义值
- reactjs - Material UI 分页组件初始视图的数字覆盖默认
- java - 需要在eclipse theia IDE中编译运行Java&spring boot项目
- python - TypeError:函数调用的位置参数过多
- webgl - WebGL Multi-Render Target:对于drawBuffers,gl.BACK有什么作用?
- python - 在数据框中保持连续天数