1

RestSharp-RestRequest我尝试通过RestRequest.AddBody-Method向 a 添加一个简单的测试类。我尝试使用两个提供的序列化程序进行序列化,但我无法让其中一个工作(JSON-Serializations 在相同的设置下工作得很好......)

这就是我进行序列化的方式:

private void SerializationTest()
{
    RestRequest request = new RestRequest();

    request.XmlSerializer = new RestSharp.Serializers.DotNetXmlSerializer();
    //request.XmlSerializer = new RestSharp.Serializers.XmlSerializer();

    request.RequestFormat = DataFormat.Xml;
    //request.RequestFormat = DataFormat.Json;
    request.AddBody(new Dummy()); // uses JsonSerializer

    label1.Text = request.Parameters[0].Value.ToString();
}

我正在使用的虚拟类是:

private class Dummy
{
    public string A = "Some string";
    public string B = "Some string";
}
  1. 使用RestSharp.Serializers.XmlSerializer()我得到:“ <Dummy />”(缺少两个字符串)

  2. 使用RestSharp.Serializers.DotNetXmlSerializer()我一无所获,程序就无法完成序列化步骤。

  3. 使用 JSON request.RequestFormat = DataFormat.Json;,一切正常。

.

{  
    "A": "Some string",  
    "B": "Some string"  
}

我如何让类正确序列化为 XML?
谢谢你的帮助!

4

1 回答 1

1

这些是字段,而不是属性。底层 XmlSerializer 仅查找公共属性。将其更新为此,它应该可以工作:

class Dummy
{
    public string A { get; set; };
    public string B { get; set; };

    public Dummy() {
        A = "Some string";
        B = "Some string";
    }
}

JSON 工作的原因是因为它遵循 JSON.NET 的默认序列化程序,该序列化程序(显然)支持字段。我个人认为这是错误的设计决定。

于 2012-02-16T21:25:07.553 回答