我将使用标准的C#库来处理JSON。我希望能够保存程序中的一些数据以备后续使用,并决定将它们保存为JSON格式。但每次添加新数组时,都会创建一个新的文件。如何确保新元素被添加到旧数组中?我无法理解需要修复什么。
以下是序列化的示例:
以下是序列化的示例:
private static void writeDeviceInfoInLog(string ipNum, string portNum, string deviceNum)
{
DeviceTCP device1 = new DeviceTCP(ipNum, portNum, deviceNum);
DeviceTCP device2 = new DeviceTCP(ipNum, portNum, deviceNum);
DeviceTCP[] devices = new DeviceTCP[] { device1, device2 };
DataContractJsonSerializer jsonFormatter = new DataContractJsonSerializer(typeof(DeviceTCP[]));
using (FileStream fs = new FileStream("0.json", FileMode.Append))
{
jsonFormatter.WriteObject(fs, devices);
}
}
这是输出文件:
[{
"IpDevice":"1","NumberDevice":"3","PortDevice":"2"
},{
"IpDevice":"1","NumberDevice":"3","PortDevice":"2"
}]
[{
"IpDevice":"1","NumberDevice":"3","PortDevice":"2"
},{
"IpDevice":"1","NumberDevice":"3","PortDevice":"2"
}]
FileMode.Append
只会在文件末尾追加内容,它并不了解 JSON 的格式。你需要先处理 JSON 然后再添加到文件中。 - Daniel A. Whitefs.Seek(-1, SeekOrigin.End)
,以覆盖结束数组字符并将逗号字符写入文件流中。然后将您的 JSON 序列化到内存流中,而不是文件流中,之后将内存流位置设置为 1,以忽略新的开始数组字符,并最终调用 MemoryStream.CopyTo 将其附加到文件中。 - ckuri