次のような HTTP リクエストから返された JSON 文字列を受信しています。
[
{
"size":590,
"location":"California",
"report":{
"Bob":[
null,
"12.0.250.0",
"20130228"
],
"Mary":[
null,
"2013-02-28.01",
"20130228"
],
"John":[
null,
"12.00",
"59123805"
]
}
},
{
"size":12348,
"location":"Florida",
"report":{
"Misty":[
null,
"65492.592",
"89216753"
],
"Billy":[
null,
"789208.w9",
"65320880"
],
"John":[
null,
"89.8056",
"75920889"
]
}
}
]
逆シリアル化しようとしているクラスは、次のように構成されています。
[DataContract]
public class DeserializedObject
{
[DataMember(Name = "size")]
public UInt64 Size { get; set; }
[DataMember(Name = "location")]
public string Location { get; set; }
[DataMember(Name = "report")]
public Dictionary<string, ReportData> Report { get; set; }
}
[CollectionDataContract]
public class ReportData : List<object>
{
public string a
{
get { return (string)this[0]; }
set { this[0] = (string)value; }
}
public string b
{
get { return (string)this[1]; }
set { this[1] = (string)value; }
}
public string c
{
get { return (string)this[2]; }
set { this[2] = (string)value; }
}
}
ただし、逆シリアル化しようとすると、レポートは常に空になります。
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<DeserializedObject>));
List<DeserializedObject> list = serializer.ReadObject(stream) as List<DeserializedObject>;
JSON応答の「レポート」部分を逆シリアル化する正しい方法は何ですか?