我想使用Json文件作为数据源,使用webapi从Json文件中检索数据。
在控制器中,我添加了以下代码:
API="http://localhost:4741"
URL_PATH="/jobs"
curl "${API}${URL_PATH}" \
--include \
--request POST \
--header "Content-Type: application/json" \
# --header "Authorization: Token token=${TOKEN}" \
--data '{
"job": {
"url": "'"${URL}"'"
}
}'
echo
在模型中,
Public HttpResponseMessage Get()
{
var json = File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath(@"~/App_Data\Bim.Json"));
return new HttpResponseMessage()
{
Content = new StringContent(json, Encoding.UTF8, "application/json"),
StatusCode = HttpStatusCode.OK
};
}
实际上,我想使用位于app_data文件夹中的json文件,如何从JSON文件中读取数据?我是webApi的新手,所以如果专家可以发布整个工作代码或尽可能多的详细信息,那将会非常有用。
答案 0 :(得分:1)
如果我是正确的,我相信您希望将json文本文件反序列化为模型类,然后将它们序列化为json以供客户端使用。
为此,您可以使用https://www.nuget.org/packages/newtonsoft.json/来帮助您。按照说明安装软件包。
一旦你这样做,你可以编写一个函数,如
public bimModel Get()
{
var json = File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath(@"~/App_Data\Bim.Json"));
var model = JsonConvert.DeserializeObject<bimModel>(json);
return model;
}
如果您的json文件是bimModels
的数组,则可以将DeserializeObject
的返回类型和类型参数更改为List<bimModel>
。
为确保您的服务器将json返回给客户端,请确保您的WebApiConfig
班级正在使用JsonMediaTypeFormatter
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.Formatting = Formatting.Indented;
}
当然,请务必加入using Newtonsoft.Json;
和using Newtonsoft.Json.Serialization;