Я использую DataContractJsonSerializer для десериализации данных JSON в Silverlight 4.
Имена ключей данных Json не совпадают с именами свойств моего класса; так что я думаю, что я должен использовать
DataMemberAttribute. Поэтому я сделал следующее:
[DataContract]
public class Person : Model
{
[DataMember(Name = "id")]
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
[DataMember(Name = "name")]
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}
Теперь десериализация завершается неудачно, потому что я не применил DataContractAttribute к модели базового класса Person. Это строгое требование? Кроме того, после того, как я применил DataContractAttribute к Model, десериализация снова не удалась, потому что я применил атрибуты DataMember к частным полям, а не к публичным свойствам. Почему я не могу применить их к частным пользователям (документация говорит об обратном).
ПРИМЕЧАНИЕ: серверный код не является ASP.NET; поэтому WCF не используется.