以下是我的代码片段工作正常,我的查询遵循代码:
型号:
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的新手,所以如果专家可以发布整个工作代码或尽可能多的详细信息,那将会很有帮助。
答案 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"
}
]