8
var obj = new MyObject();

RestSharp の取得に問題がありRestRequest.AddBody(obj)ます。オブジェクトを正しくシリアル化します。

class MyObject
{
   [JsonProperty(PropertyName="a")]
   public A{get;set;}

   [JsonProperty(PropertyName="b")]
   public B{get;set;}
}

問題は、AddBody シリアライザーが JsonProperty 属性を考慮していないことです。RestRequest または RestClient でシリアライザーを設定する方法を理解できるようです。

4

2 に答える 2

5

次のリンクを見つけて、属性サポートの欠如の問題を解決しましたRestSharp Deserialization

デフォルトのシリアライザーのオーバーライド

XML または JSON 要求本文で要求を行う場合、使用する ISerializer の独自の実装を指定できます。

var request = new RestRequest();
request.RequestFormat = RequestFormat.Xml;
request.XmlSerializer = new SuperXmlSerializer(); // implements ISerializer
request.AddBody(person); // object serialized to XML using your custom serializer;

そして、デフォルトの JsonSerializer をオーバーライドするために次のクラスを実装しました新しい Json Serializer

于 2013-03-12T20:32:53.993 に答える
5

tafaju の回答を使用し、json のシリアライザーをこのように実装しました。

public class CustomJsonSerializer : ISerializer
{
    public CustomJsonSerializer()
    {
        ContentType = "application/json";
    }

    public string Serialize(object obj)
    {
        return JsonConvert.SerializeObject(obj);
    }

    public string RootElement { get; set; }

    public string Namespace { get; set; }

    public string DateFormat { get; set; }

    public string ContentType { get; set; }

}

そして、それは私にとって完璧に機能し、属性を読み取り、すべてのタイプを正しくシリアル化します。ただし、すべてのタイプでテストしたわけではありません。ドキュメントによると、RootElement、Namespace、DateFormat は json には使用されません。

于 2014-07-22T19:39:01.097 に答える