次のようなJson文字列があります。
{
EventID: 4,
CalendarEntry :
{
CalendarID: 4,
AreaID: 41,
Name: "My Event Entry #4"
}
}
トップレベル構造をコード内のイベントエンティティに逆シリアル化します。これにより、Idに(4)が正しく追加されます。
public class Event
{
[DataMember(Name = "EventID")]
public int Id { get; set; }
}
ただし、カレンダーをプロパティとしてイベントに追加すると、2つのIDは常にnullを返しますか?
public class EventCalendar
{
[DataMember(Name = "CalendarID")]
public int Id { get; set; }
[DataMember(Name = "AreaID")]
public int AreaId { get; set; }
[DataMember(Name = "Name")]
public string Name { get; set; }
}
public class Event
{
[DataMember(Name = "EventID")]
public int Id { get; set; }
[DataMember(Name = "CalendarEntry")]
public EventCalendar Calendar { get; set; }
}
私の悩みの種は、IdまたはAreaIdのいずれかから[DataMember]属性を削除し、JSON文字列から取得した名前とまったく同じ名前を付けると、正しい結果が返されることです。ただし、エンティティで同じ名前を使用したくないので、[DataMember]がデータを正しく戻すことを期待していましたか?
.Net4.5でJsonSerializerを使用しています。
Newtonsoft.Jsonでもこれを試しましたが、同じことをしますか?