【发布时间】:2016-05-26 12:25:52
【问题描述】:
我正在尝试创建一个 webapi,它读取现有的 JSON 文件,然后将其作为 json 对象返回,以便我可以使用 Javascript 将数据作为 HTML 填充到该站点。 http://pptlbhweb.azurewebsites.net/
JSON 文件得到更新,因为我有一个温度记录器,可将事件记录到 eventthub - Streamanalytics - 在 blob 存储 (Azure) 中另存为 JSON
这是 JSON 文件:https://pptlbhstorage.blob.core.windows.net/temperature/0_7622a22009224c78a46c0b2bc0a3fd82_1.json
如果您查看 JSON 文件,它需要在末尾附加“]”(这是我的想法),这样我可以获得 WebApi 返回的有效 JSON 对象。
我已经创建了一个 WebApi,所以我可以使用 URL 来获取数据。 http://pptlbhwebapi.azurewebsites.net/api/test
获取温度的类似方法例如: http://pptlbhwebapi.azurewebsites.net/api/temperature
修复:
将此添加到您的 api 控制器:
[System.Web.Http.Route("api/readandreturnjson")]
[System.Web.Http.HttpGet]
public async Task<IHttpActionResult> ReadAndReturnJsonAsync()
{
// object to return through the API (it'll be serialized by WebAPI)
object obj = null;
// WebClient used to download the JSON file
using (var wc = new WebClient())
{
var url =
"https://pptlbhstorage.blob.core.windows.net/temperature/0_7622a22009224c78a46c0b2bc0a3fd82_1.json";
// Used to hold and add a ']' to the downloaded JSON
StringBuilder builder = new StringBuilder();
builder.Append(await wc.DownloadStringTaskAsync(url));
builder.Append("]");
// Deserialize the now valid JSON into obj
obj = JsonConvert.DeserializeObject(builder.ToString());
}
// return the json with 200 Http status.
return Ok(obj);
}
在 Global.assax 中:
GlobalConfiguration.Configuration.Formatters.Remove(GlobalConfiguration.Configuration.Formatters.XmlFormatter);
【问题讨论】:
标签: javascript c# json azure asp.net-web-api