首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ASP.NET Web API返回JSON文件

使用ASP.NET Web API返回JSON文件
EN

Stack Overflow用户
提问于 2013-03-31 10:59:28
回答 3查看 43.1K关注 0票数 27

我正在尝试使用ASP.NET Web API返回一个JSON文件(用于测试)。

代码语言:javascript
复制
public string[] Get()
{
    string[] text = System.IO.File.ReadAllLines(@"c:\data.json");

    return text;
}

在Fiddler中,这确实显示为Json类型,但当我在Chrome中调试并查看对象时,它显示为单个行的and数组(左)。正确的图像是我使用对象时应该是什么样子。

谁能告诉我应该返回什么才能以正确的格式获得结果?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-31 11:56:36

文件中是否已经包含有效的JSON?如果是这样的话,您应该调用File.ReadAllText并将其作为单个字符串获取,而不是调用File.ReadAllLines。然后,您需要将其解析为JSON,以便Web API可以重新序列化它。

代码语言:javascript
复制
public object Get()
{
    string allText = System.IO.File.ReadAllText(@"c:\data.json");

    object jsonObject = JsonConvert.DeserializeObject(allText);
    return jsonObject;
}

这将:

  1. 将文件作为字符串读取
  2. 将其作为JSON对象解析为CLR对象
  3. 将其返回到Web,以便可以将其格式化为JSON (或XML等)
票数 29
EN

Stack Overflow用户

发布于 2013-03-31 12:02:27

我找到了另一个解决方案,如果有人对此感兴趣的话,它也是有效的。

代码语言:javascript
复制
public HttpResponseMessage Get()
{
    var stream = new FileStream(@"c:\data.json", FileMode.Open);

    var result = Request.CreateResponse(HttpStatusCode.OK);
    result.Content = new StreamContent(stream);
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

    return result;
}
票数 23
EN

Stack Overflow用户

发布于 2017-02-09 23:02:12

我需要类似的东西,但IHttpActionResult (WebApi2)是必需的。

代码语言:javascript
复制
public virtual IHttpActionResult Get()
{
    var result = new System.Net.Http.HttpResponseMessage(System.Net.HttpStatusCode.OK)
    {
        Content = new System.Net.Http.ByteArrayContent(System.IO.File.ReadAllBytes(@"c:\temp\some.json"))
    };

    result.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
    return ResponseMessage(result);
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15725884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档