【发布时间】:2017-10-20 13:53:39
【问题描述】:
我正在尝试以 JSON 格式从 API 发送响应。目前,我们多次调用其他 Web 服务来使用它,并将所有响应作为 JSON 一起发送。被调用的 Web 服务以 JSON 形式返回响应。以下是我正在做的事情
List<Models.DTO.RootObject> i_response = new List<Models.TO.RootObject>();
public async Task<IHttpActionResult> Get()
{
.....
foreach (int req_id in reqIdLst)
{
using (var client_request = new HttpClient())
{
string request_Uri = BaseURL_iLab;
Uri uri_request = new Uri(request_Uri);
client_request.BaseAddress = uri_request;
client_request.DefaultRequestHeaders.Accept.Clear();
client_request.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client_request.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
var request_response = await client_request.GetAsync(uri_request);
var responsefile = await request_response.Content.ReadAsStringAsync();
var request_returnDataObj = JsonConvert.DeserializeObject<Models.DTO.RootObject>(responsefile);
i_response.Add(request_returnDataObj);
}}
return Ok(i_response);
}}
但我上面的代码在调试时抛出错误
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>
The 'ObjectContent`1' type failed to serialize the response body for content
type 'application/xml; charset=utf-8'.
</ExceptionMessage>
<ExceptionType>System.InvalidOperationException</ExceptionType>
<StackTrace/>
<InnerException>
我不确定如何以 JSON 而不是 XML 的形式发送。
【问题讨论】:
-
除了不序列化为 json 之外,您的模型中似乎还有循环引用:stackoverflow.com/questions/23098191/…。在 web api 中,有一个内容协商过程来根据您的客户端返回预期的格式,您不应该在这里硬编码您的 json 格式。
-
您确定您没有尝试反序列化错误吗?返回的http状态码是什么?
-
@PeterBons http状态码是200。但是抛出上面的错误
-
@KhanhTO 但是,如果我想在浏览器中查看响应,我该怎么做。还有循环引用我不确定我是新来的什么问题
-
responsefile的内容是什么?你检查了吗?
标签: c# json asp.net-web-api serialization json-deserialization