【发布时间】:2019-02-05 16:24:08
【问题描述】:
我需要对列表进行序列化和反序列化,并将其写入 JSON 文件以供以后使用。
我成功反序列化文件,但序列化后无法写入。我该怎么做?
这是我写的代码。
StorageFile savedFile = await storageFolder.GetFileAsync("SavedData.json");
string text = await FileIO.ReadTextAsync(savedFile);
var serializer = new DataContractJsonSerializer(typeof(DataFormat));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(text));
List<DataFormat> data = (List<DataFormat>)serializer.ReadObject(ms);
if (data == null)
{
data = new List<DataFormat>();
}
data.Add(new DataFormat
{
firstName = fnbox.Text,
lastName = lnbox.Text,
country = cbox.Text
});
MemoryStream stream = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DataFormat));
ser.WriteObject(stream, data);
数据格式类 -
[DataContract]
public class DataFormat : IEquatable<DataFormat>
{
[DataMember]
public string firstName{ get; set; }
[DataMember]
public string lastName { get; set; }
[DataMember]
public string country { get; set; }
public bool Equals(DataFormat other)
{
if (other == null)
{
return false;
}
return (firstName.Equals(other.firstName));
}
}
另外如果有任何方法可以将行添加到现有的 文件而不替换所有文本,请告诉我。
【问题讨论】:
-
为什么不直接写入文件,如Using DataContractJsonSerializer to create a Non XML Json file接受的答案所示?
-
你说的“添加行”是什么意思?添加新数据成员或添加 json 对象?您收到的错误信息是什么?
-
我的意思是一个新的 JSON 对象。而且我没有收到任何错误,因为我不知道如何在 JSON 文件上写入。这就是我需要“如何在序列化后写入 JSON 文件”的答案。谢谢。 @BarryWang-MSFT
标签: c# json serialization uwp memorystream