Asp.net core 在.NETCore3.0中将通用c#模型序列化为xml
我正在使用.NETCore3.0创建Web API。我想将一个通用模型序列化为Asp.net core 在.NETCore3.0中将通用c#模型序列化为xml,asp.net-core,asp.net-core-webapi,asp.net-core-3.0,Asp.net Core,Asp.net Core Webapi,Asp.net Core 3.0,我正在使用.NETCore3.0创建Web API。我想将一个通用模型序列化为XML。但默认情况下,它仅将通用模型序列化为JSON 当我试图将一个简单模型序列化为XML时,它被正确地序列化为XML 根据传递的头,我想序列化模型。以下是我迄今为止所做的: 在startup.cs文件中: services.AddControllers(options =>{ options.RespectBrowserAcceptHeader = true; // false by defau
XML
。但默认情况下,它仅将通用模型序列化为JSON
当我试图将一个简单模型序列化为XML
时,它被正确地序列化为XML
根据传递的头,我想序列化模型。以下是我迄今为止所做的:
在startup.cs文件中:
services.AddControllers(options =>{
options.RespectBrowserAcceptHeader = true; // false by default
}).
AddXmlSerializerFormatters().
下面是代码示例:
我的通用模型:
public class ApiResponseModel<T>
{
public int ErrorCode { get; set; }
public string ErrorMessage { get; set; }
public T Data { get; set; }
public ApiResponseModel(int errorCode, string errorMessage, T data)
{
this.ErrorCode = errorCode;
this.ErrorMessage = errorMessage;
this.Data = data;
}
}
如何获得通用模型的XML
响应?有两个原因:
apiressemodel
没有无参数构造函数AddXmlSerializerFormatters()
(而不是XML DataContractSerializer)的XmlSerializer
,默认情况下,它不会处理IEnumerable
序列化你的解决方案很有魅力。谢谢。但是,如何为模型包含无参数构造函数来解决这个问题呢?你能简要介绍一下这一点吗?或者你是如何指出确切的问题的。?提前谢谢。@Sunny12我不是像Jon Skeet那样聪明的人,他可以在大脑中编译和运行代码。所以我只是签出日志,日志告诉我应该有一个无参数构造函数:)好的,那么忽略这些日志是不好的。无论如何,谢谢@负离子
[HttpGet]
public async Task<IActionResult> Get()
{
IEnumerable<RoleDTO> roleList = null;
roleList = await _repository.RoleRepository.GetAllRolesAsync();
return Ok(roleList);
}
public class ApiResponseModel<T>
{
public int ErrorCode { get; set; }
public string ErrorMessage { get; set; }
public T Data { get; set; }
public ApiResponseModel() { } // add a parameterless constructor
public ApiResponseModel(int errorCode, string errorMessage, T data)
{
this.ErrorCode = errorCode;
this.ErrorMessage = errorMessage;
this.Data = data;
}
}
services.AddControllersWithViews(opts =>{
opts.RespectBrowserAcceptHeader = true;
})
.AddXmlDataContractSerializerFormatters()
.AddXmlSerializerFormatters()