Angularjs 将Json发布到WebApi-反序列化到XmlNode
我正在使用angular的$http.post发送一个JSON对象 除其他外,将填充Id值。但是,XmlNode属性不是反序列化的,而是空的。这个相同的配置实体被序列化为json而没有问题 如何正确地反序列化XmlNodes? 注意:我无法更改配置类。另外,我正在使用CamelCasePropertyNamesContractResolver Json格式化程序 Web Api控制器 配置类 Json数据: 编辑:我已经验证了在使用XmlDocument而不是XmlNode时,XML是否正确序列化。我编写了一个自定义JsonConverter,将XmlNode转换为XmlDocument 将转换器添加到JsonFormatter.SerializerSettings 这是可行的,但看起来像是一个黑客。有更好的办法吗Angularjs 将Json发布到WebApi-反序列化到XmlNode,angularjs,asp.net-web-api,asp.net-web-api2,Angularjs,Asp.net Web Api,Asp.net Web Api2,我正在使用angular的$http.post发送一个JSON对象 除其他外,将填充Id值。但是,XmlNode属性不是反序列化的,而是空的。这个相同的配置实体被序列化为json而没有问题 如何正确地反序列化XmlNodes? 注意:我无法更改配置类。另外,我正在使用CamelCasePropertyNamesContractResolver Json格式化程序 Web Api控制器 配置类 Json数据: 编辑:我已经验证了在使用XmlDocument而不是XmlNode时,XML是否正确序列
[Route("api/config/{Id}")]
[HttpPut]
public IHttpActionResult Save(Guid Id, Configuration config)
{
... config.Configuration is null ...
return Ok();
}
public class Configuration {
public string Id { get; private set; }
public XmlNode Configuration { get; private set; }
}
{
"Id": "1",
"configuration": {
"Config": {
"Settings": {
"Setting": [
{
"@SettingId": "1",
"@Name": "DEFAULT"
}
]
}
}
}
}
public class XmlNodeConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(XmlNode);
}
public override bool CanRead
{
get
{
return true;
}
}
public override bool CanWrite
{
get
{
return false;
}
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JObject jsonObject = JObject.Load(reader);
XmlDocument document = JsonConvert.DeserializeXmlNode(jsonObject.ToString());
return document;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new XmlNodeConverter());