[英]C# Serialize with JSON
我有以下 class:
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);
}
}
現在在另一個 class 我想寫一個.json 文件來序列化 class 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
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);
}
}
output 是:
"{\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 僅支持一個頂級 object 或陣列。 要序列化集合,請序列化集合本身。 這將創建一個包含元素的有效 JSON 數組。
public void WriteInFile(IEnumerable<Employee> employees)
{
var json = JsonConvert.SerializeObject(employees, Formatting.Indented);
File.WriteAllText("employees.json", json);
}
有可能的。 不再使用JsonSerializer再次寫入文件,append 將序列化字符串的內容寫入文本文件。
string output = "";
foreach (Employee item in list)
{
string s = JsonConvert.SerializeObject(item, Formatting.Indented);
output+= s+Environment.NewLine;
}
最后將 output 字符串寫入文件,不再使用 JsonSerializer 。
File.WriteAllText("output.json", output);
然后你會得到 output 文件,
{"Name":"Susan","Age":34}
{"Name":"Jack","Age":50}
{"Name":"Sally","Age":25}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.