從查看RestSharp源代碼可以使其執行數據合同反序列化,這似乎需要更改RestSharp源代碼。
在SimpleJson.cs
搜索//#define SIMPLE_JSON_DATACONTRACT
然後你需要創建數據合約,以及(見「@attr」下):
[DataContract]
public class SomeJson
{
[DataMember(Name = "toptags")]
public Tags TopTags { get; set; }
}
[DataContract]
public class Tags
{
[DataMember(Name = "@attr")]
public Attr Attr { get; set; }
}
[DataContract]
public class Attr
{
[DataMember(Name = "artist")]
public string Artist { get; set; }
[DataMember(Name = "album")]
public string Album { get; set; }
}
沒有嘗試與RestSharp,但它與這片代碼工作,RestSharp使用DataContractJsonSerializer,可能你將不得不設置
SimpleJson.CurrentJsonSerializerStrategy =
SimpleJson.DataContractJsonSerializerStrategy
我的測試:
var json = "{ \"toptags\":{ \"@attr\":{ \"artist\":\"Whatever\", \"album\":\"Whatever\" }}}";
var serializer = new DataContractJsonSerializer(typeof(SomeJson));
var result = (SomeJson)serializer.ReadObject(
new MemoryStream(Encoding.ASCII.GetBytes(json)));