如何用正确的格式从c#中的类生成JSON文件
本文关键字:JSON 文件 何用正 格式 | 更新日期: 2023-09-27 17:51:21
我有麻烦,使JSON文件从我的Server
类。这是我的班级:
public class CsServerInfo
{
public string ip { get; set; }
public string name { get; set; }
}
这个想法是在Button Click
上的JSON文件中添加新的服务器。这意味着每次我点击一个按钮(在一个WPF窗口有TextBoxes
的IP
和Name
属性)一个新的服务器应该添加到JSON文件。
CsServerInfo newServ = new CsServerInfo();
newServ.ip = this.serverIP.Text;
newServ.name = this.serverName.Text;
string json = JsonConvert.SerializeObject(newServ);
System.IO.File.AppendAllText(@"C:'JSON4.json", json);
问题是我得到的JSON文件格式不正确:
{"ip":"52.45.24.2","name":"new"}{"ip":"45.45.45.4","name":"new2"}
服务器之间没有逗号,如果我使用ToArray()
,我得到:
[{"ip":"52.45.24.2","name":"new"}][{"ip":"45.45.45.4","name":"new2"}]
正确的格式应该是[{server properties}, {another server}]
,但我不能得到。谢谢你的帮助
每次将一个服务器的JSON文本附加到文件中。您应该解析现有列表,添加服务器,然后序列化整个列表。
// TODO first check if there's an existing file or not
var servers =
JsonConvert.DeserializeObject<List<CsServerInfo>>(File.ReadAllText(@"C:'JSON4.json"));
servers.Add(newServ);
File.WriteAllText(@"C:'JSON4.json", JsonConvert.SerializeObject(servers));
[{server properties}, {another server}]
这是一个对象列表。你应该序列化list
List<CsServerInfo> listServ = new List<CsServerInfo>;
...
string json = JsonConvert.SerializeObject(listServ );
如果你需要在文件中追加,你应该从文件中读取所有到列表,添加新的并保存回来。
不要尝试在文件中附加JSON。让Json。. NET处理序列化为JSON的工作。您应该在完成修改后操作List<CsServerInfo>
并序列化整个列表。这样在序列化和保存Json时。. NET正在生成JSON,它做得很好,它将被正确格式化。