我正在尝试使用FormatFilter生成“ json”或“ xml”控制器响应输出。
问题是我的出发点是一个随机的(格式正确的)xml字符串。
我正在使用DotNet Core 2.2,这就是我现在在控制器中拥有的东西:
[HttpGet("values.{format}"), FormatFilter]
public ActionResult TestObjectOutput()
{
string xml = DynamicXmlRawString();
XDocument doc = XDocument.Parse(xml);
string json = JsonConvert.SerializeXNode(doc);
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json);
return Ok(obj);
}
public static string DynamicXmlRawString()
{
return $@"<Result><DateTime>{DateTime.Now}</DateTime><User><Someone>12345678</Someone></User></Result>";
}
json 的输出响应如预期般到达。
$ curl -i -X GET http://0.0.0.0:5000/api/values/object.json
{"Result":{"DateTime":"27/04/2019 16:31:27","User":{"Someone":"12345678"}}}
xml 的响应返回 HTTP / 1.1 406不可接受
curl -i -X GET http://0.0.0.0:5000/api/values/object.xml
服务器错误:
An error occurred while trying to create an XmlSerializer for the type 'System.Dynamic.ExpandoObject'.
预期结果:
<Result><DateTime>27/04/2019 16:40:05</DateTime><User><Someone>12345678</Someone></User></Result>
有什么办法解决这个问题吗?
谢谢
答案 0 :(得分:0)
似乎我想得太多...问题解决了。
[HttpGet("values.{format}"), FormatFilter]
public ActionResult TestObjectOutput()
{
string xml = DynamicXmlRawString();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
return Ok(xmlDoc);
}
public static string DynamicXmlRawString()
{
return $@"<Result><DateTime>{DateTime.Now}</DateTime><User><Someone>12345678</Someone></User></Result>";
}