以JSON格式返回文件数据

时间:2017-12-21 02:36:56

标签: c# asp.net json

我有一个txt文件,里面有一些数据。我想以JSON格式返回数据。

为什么当我在我的控制器中执行此操作时,我能够显示结果(但不能以JSON格式显示):

public IHttpActionResult Get()
{
    return new FileReaderClient("C:\\Users\\attsuap1\\Desktop\\1milliontest.txt");
}

但是当我这样做时,我得到的结果为:{"Data":{}}

public IHttpActionResult Get()
    {
        var result = new FileReaderClient("C:\\Users\\attsuap1\\Desktop\\1milliontest.txt");
        return Ok(new { Data = result });
    }

如果我只是return result

 public IHttpActionResult Get()
    {
        var result = (new FileReaderClient("C:\\Users\\attsuap1\\Desktop\\1milliontest.txt"));
        return result;
    }

我确实得到了数据,但它不是我想要的Json格式,例如{"Data": "Allthecontentinhere"}。我尝试return Json(result)也没有用。

这是我的FileReaderClient.cs类

public class FileReaderClient : IHttpActionResult
{
    private readonly string filePath;
    private readonly string contentType;

    public FileReaderClient(string filePath, string contentType = null)
    {
        this.filePath = filePath;
        this.contentType = contentType;
    }

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        return Task.Run(() =>
        {
            var response = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StreamContent(File.OpenRead(filePath))
            };

            var contentType = this.contentType ?? MimeMapping.GetMimeMapping(Path.GetExtension(filePath));
            response.Content.Headers.ContentType = new MediaTypeHeaderValue(contentType);

            return response;
        }, cancellationToken);
    }
}

如何编辑我的代码,以便以JSON格式返回文件中的数据?

1 个答案:

答案 0 :(得分:1)

您可以使用'JsonConvert' / NewtonSoft的JSON.Net库,

var million_records;
using(StreamReader sr = new StreamReader(Server.MapPath("~/Uploads/1milliontest.json")))
{
      million_records= JsonConvert.DeserializeObject<List<MillionData>>(sr.ReadToEnd());
}
return million_records;

希望这会有所帮助。 --- N Baua