使用RestSharp.AddBody将类序列化为xml失败

本文关键字:xml 失败 序列化 RestSharp AddBody 使用 | 更新日期: 2023-09-27 18:24:56

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

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

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
谢谢你的帮助!

使用RestSharp.AddBody将类序列化为xml失败

这些是字段,而不是属性。基础XmlSerializer只查找公共属性。更新到这个,它应该工作:

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

JSON之所以有效,是因为它遵循了JSON.NET的默认序列化程序,该序列化程序(显然)支持字段。我个人认为这是一个错误的设计决定。