这是我的班级
[DataContract]
public class WytypowaneMecze
{
public WytypowaneMecze() { }
public WytypowaneMecze(String data, String d_gospodarzy, String d_gosci, String wynik)
{
this.Data = data;
this.D_gospodarzy = d_gospodarzy;
this.D_gosci = d_gosci;
this.Wynik = wynik;
}
public string Data { get; set; }
public string D_gospodarzy { get; set; }
public string D_gosci { get; set; }
public string Wynik { get; set; }
}
}
我是如何写我的文件列表wytypowane
private async void zapiszPlik()
{
string json = "wytypowane.json";
var serializer = new DataContractJsonSerializer(typeof(List<WytypowaneMecze>));
var stream = await Windows.ApplicationModel.Package.Current.InstalledLocation.OpenStreamForWriteAsync(json, CreationCollisionOption.OpenIfExists);
using (stream)
{
serializer.WriteObject(stream, wytypowane);
}
}
但我无法读到这个......
其他信息:&#39; {}] [{},{}] [{}] [{}] [{},{}] [{}] [{}] [{}] [{} ] [{}] [{}] [{}]&#39;不是有效的JSON原语。当JSON数据之后出现无关数据时,也会发生此错误。
private async void odczyt()
{
string json = "wytypowane.json";
List<WytypowaneMecze> lista = new List<WytypowaneMecze>();
var deserializer = new DataContractJsonSerializer(typeof(List<WytypowaneMecze>));
var stream = await Windows.ApplicationModel.Package.Current.InstalledLocation.OpenStreamForReadAsync(json);
using (stream)
{
lista = (List<WytypowaneMecze>)deserializer.ReadObject(stream);
}
}
答案 0 :(得分:1)
您需要使用DataMember
属性标记要序列化的属性。这是因为您使用DataContractJsonSerializer
和数据合约是opt-in:
将DataMemberAttribute属性与DataContractAttribute一起应用,以标识属于数据协定的类型的成员。其中一个可以序列化数据合同的序列化程序是DataContractSerializer。
数据合同模型是&#34;选择加入&#34;模型。将DataMemberAttribute应用于字段或属性显式指定将序列化成员值。相反,BinaryFormatter序列化一个类型的公共和私有字段,而XmlSerializer仅序列化一个类型的公共字段和属性。
因此:
[DataContract]
public class WytypowaneMecze
{
public WytypowaneMecze() { }
public WytypowaneMecze(String data, String d_gospodarzy, String d_gosci, String wynik)
{
this.Data = data;
this.D_gospodarzy = d_gospodarzy;
this.D_gosci = d_gosci;
this.Wynik = wynik;
}
[DataMember]
public string Data { get; set; }
[DataMember]
public string D_gospodarzy { get; set; }
[DataMember]
public string D_gosci { get; set; }
[DataMember]
public string Wynik { get; set; }
}