【发布时间】:2018-07-10 17:55:05
【问题描述】:
我正在尝试开发 Asp.Net Web Api,它的响应总是
public class ApiResponse : IApiResponse, IHttpActionResult
{
private readonly HttpRequestMessage _request;
private readonly HttpStatusCode _statusCode;
private readonly string _message;
[IgnoreDataMember]
protected Type ResponseDataType { get; set; }
[DataMember(Name = "data")]
public object Data { get; private set; }
[DataMember(Name = "dataType")]
public string DataType => this.ResponseDataType.Name;
[DataMember(Name = "additionalMessage")]
public string AdditionalMessage => this._message;
public ApiResponse(HttpRequestMessage request, HttpStatusCode responseStatus, Type dataType, object data = null, string additionalMessage = null)
{
this._request = request;
this._statusCode = responseStatus;
this.ResponseDataType = dataType;
this.Data = data;
this._message = additionalMessage;
}
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
HttpResponseMessage response = _request.CreateResponse(_statusCode, this);
return Task.FromResult(response);
}
}
如何反序列化这种响应以将Data 属性转换为DataType 类型的对象?
例如如果响应被序列化成这个Json
"dataType": "UserModel"
"data":
{
"name" : "Bill",
"surname" : "Lob"
}
如何使用 Newtonsoft.Json 反序列化此响应以将“object data”转换为“UserModel data”?
有什么办法吗?
【问题讨论】:
-
你可能需要实现自己的
JsonConverter类newtonsoft.com/json/help/html/CustomJsonConverter.htm
标签: c# asp.net-web-api json.net