如何使用外部Json文件作为webapi

时间:2015-07-12 17:59:45

标签: json asp.net-web-api

以下是我的代码片段工作正常,我的查询遵循代码:

型号:

namespace CVHub.Models
{
    [DataContract]
    public class Context
    {
        [DataMember]
        public int sessionID { get; set; }
        [DataMember]
        public string Name { get; set; }

        public static List <Context> Contexts= new List<Context>
        {

            new Context{sessionID=1,Name="Name1"},
            new Context {sessionID=2,Name="Name2"},
            new Context {sessionID=3,Name="Name3"}
        };
    }
}

控制器:

namespace CVHub.Controllers
{
    public class ContextController : ApiController
    {
        List<Context> items;
        // GET api/values
        public IEnumerable<Context> Get()
        {
            //return Context.Contexts;
            return items;
        }
    }
}

问题:我想使用外部json文件(驻留在app_data文件夹中)来提供相同的数据而不是new Context{sessionID=1,Name="Name1"}, 如何使用我从json文件中读取的数据?我是MVC和webApi的新手,所以如果专家可以发布整个工作代码或尽可能多的详细信息,那将会很有帮助。

1 个答案:

答案 0 :(得分:7)

您可以将加载了JSON文件的HttpResponseMessage返回到StringContent

public class JsonFileController : ApiController
{
    public HttpResponseMessage Get()
    {
        var json = File.ReadAllText(Server.MapPath(@"~/App_Data/contexts.json");

        return new HttpResponseMessage()
        {
            Content = new StringContent(json, Encoding.UTF8, "application/json"),
            StatusCode = HttpStatusCode.OK
        };
    }
}

<强>的App_Data / contexts.json

[
    {
        "sessionId": 1,
        "name": "name1"
    },
    {
        "sessionId": 2,
        "name": "name2"
    },
    {
        "sessionId": 3,
        "name": "name3"
    }
]