RestSharp JsonDeserializer with special characters in identifiers
From looking at the RestSharp source it's possible to enable it to do data contract deserialization, this seems to require a change of the RestSharp source.
Search for //#define SIMPLE_JSON_DATACONTRACT
in SimpleJson.cs
Then you'll need to create the data contracts as well (see "@attr" below):
[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; }}
Didn't try it with RestSharp, but it works with this piece of code, RestSharp uses DataContractJsonSerializer, possibly you will have to set the
SimpleJson.CurrentJsonSerializerStrategy = SimpleJson.DataContractJsonSerializerStrategy
My test:
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)));