我試圖用Json.net反序列化一個對象。我能夠成功地做到這一點,但它更多的是黑客攻擊,所以我正在尋找一種更好/適當的方式來做到這一點。使用Json.Net反序列化Json對象
{
"page":"admin",
"context":"id",
"records":{
"rCount":6,
"1":[
{
"name":"Romeo",
"dob":"01\/01\/1970"
},
{
"name":"Harry",
"dob":"10\/10\/2012"
},
{
"name":"Lee",
"dob":"17\/10\/2012"
}],
"2":[
{
"name":"Mark",
"dob":"01\/01\/1970"
},
{
"name":"Jack",
"dob":"10\/10\/2012"
},
{
"name":"Json",
"dob":"17\/10\/2012"
}],
}}
這是JSON字符串的問題是與記錄對象。如果它沒有rCount變量,那麼它可以反序列化爲字典,但由於rCount變量,它不能正確反序列化爲字典。應該是對這個對象進行反序列化的正確方式。
這裏是我的解決方案:
class Program
{
static void Main(string[] args)
{
var recordFile = JsonConvert.DeserializeObject<RecordFile>(Properties.Resources.data);
}
public class RecordFile
{
public string Page { get; set; }
public string Context { get; set; }
public Records Records { get; set; }
}
public class Records
{
public int RCount { get; set; }
[JsonExtensionData]
private Dictionary<string, object> _reocordList;
public List<Record[]> RecordList
{
get
{
if (_reocordList != null && _reocordList.Count > 0)
{
return _reocordList.Values.Select(record => JsonConvert.DeserializeObject<Record[]>(record.ToString())).ToList();
}
return new List<Record[]>();
}
}
}
public class Record
{
public string Name { get; set; }
public string Dob { get; set; }
}
}
@AndrewWhitaker沒有其他的方式來deseialize它。由於** JsonExtensionDataAttribute **,我正在使用** Dictionary **。 **列表 **或**字典<字符串,記錄[]> **將做這項工作 –
2014-08-27 20:34:14
是的,我意識到,我發佈我的評論後,哈哈。 – 2014-08-27 20:35:04