【问题标题】:.net web api reponse json wrapped in xml.net web api响应json包装在xml中
【发布时间】:2016-11-15 11:54:40
【问题描述】:

我创建了一个 web api 项目并进行了一个简单的查询。然后我将数据转换为json并返回数据。 问题是数据被包装了:

<string xmls="http/.../"> {json data} </string>

函数的定义是:

public IHttpActionResult GetAllObjects();

然后我带着这条线回来

return Ok(jsonData);

我只需要让 json 不被 html 标签包裹,但仍然使用 IHttpActionResult。

【问题讨论】:

  • 如何查询您的服务?其次,您是否确保将 http 查询的 contentType 或接受(不记得应该设置哪一个)属性设置为 json
  • 否.. 需要在哪里设置?我使用数据阅读器进行查询,然后序列化数据并将其转换为 json。
  • 看看this
  • 有什么具体原因吗?
  • 工作,谢谢!,将返回行改为内容而不是好的

标签: c# asp.net json asp.net-web-api


【解决方案1】:

对我来说唯一缺少的是响应标头仍然包含内容类型:text/html。为什么这是个问题?因为我使用检查内容类型的 J-SON Formatter Chrome 扩展程序,但我没有得到我习惯的漂亮格式。我用一个简单的自定义格式化程序解决了这个问题,它接受 text/html 请求并返回 application/j-son 响应:

    public class JsonFormatter : JsonMediaTypeFormatter
    {
           public JsonFormatter() {
            this.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
            this.SerializerSettings.Formatting = Formatting.Indented;
                                  }
        public override void SetDefaultContentHeaders(Type type, HttpContentHeaders    headers, MediaTypeHeaderValue mediaType) 
{
            base.SetDefaultContentHeaders(type, headers, mediaType);
            headers.ContentType = new MediaTypeHeaderValue("application/json");
                                                               }
    }

然后使用这个代码:

 config.Formatters.Add(new JsonFormatter());

【讨论】:

    【解决方案2】:

    好的,显然当您返回 ok 时,您输入的数据会自动解析为 xml 格式,返回响应时只需使用 content 而不是 ok。

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2016-09-12
      • 2017-11-06
      • 2020-12-07
      • 2019-02-18
      相关资源
      最近更新 更多