2015-01-19 3 views
0

вот мой классDeserialize поток JSON

[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); 
     } 

    } 

, но я не могу читать это ...

Дополнительная информация: {{}] [{}, {}] [{}] [{}] [{}, {}] [{}] [{}] [{}] [{}] [{} ] [{}] [{}] 'не является допустимым примитивом 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

Что исключение, так что вы получите? Ивляется ли ваш action для json-файла установленным для контента? –

+0

Исключение типа «System.Runtime.Serialization.SerializationException» произошло в SYSTEM.SERVICEMODEL.WEB.NI.DLL, но не было обработано в коде пользователя Дополнительная информация: '{}] [{}, {}] [{ }] [{}] [{}, {}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] [{}] 'недействительный Примитивный JSON. Эта ошибка также может возникать при наличии посторонних данных после данных JSON. – jukiduki

+0

Ошибка не в доступе к файлу, а в вашей сериализации json. Проверьте, какие данные вы передаете сериализатору. Похоже, вы вкладываете в него много пустых ценностей. –

ответ

1

Вы должны отметить свойства, которые вы хотите сериализовать с атрибутом DataMember. Это потому, что вы используете DataContractJsonSerializer и данные контракты opt-in:

Применить атрибут DataMemberAttribute в сочетании с DataContractAttribute для идентификации типа членов, которые являются частью контракта данных. Одним из сериализаторов, которые могут сериализовать контракты данных, является DataContractSerializer.

Модель контракта с данными является моделью «opt-in». Применение 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; } 
}