使用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";
}
使用
RestSharp.Serializers.XmlSerializer()
我得到:"<Dummy />
"(缺少两个字符串)使用
RestSharp.Serializers.DotNetXmlSerializer()
,我什么也得不到,程序就是没有完成序列化步骤。使用JSON
request.RequestFormat = DataFormat.Json;
,一切都可以正常工作。
{
"A": "Some string",
"B": "Some string"
}
如何使类正确序列化为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的默认序列化程序,该序列化程序(显然)支持字段。我个人认为这是一个错误的设计决定。