c# - 使用 MVC 6 显示从 ASP.NET 5 中的 WebRequest 获取的 JSON 数据

标签 c# asp.net json asp.net-mvc asp.net-core

这是我的第一个问题,所以如果我弄乱了格式或一般情况下做错了,我深表歉意,请随时给我指点,我总是乐于学习。

无论如何,我手头的问题是我有一个正在使用 ASP.NET 5 和 MVC 6 开发的 Web 应用程序,所有应用程序都是最新的,到目前为止为了测试,我一直在使用 localdb 并工作用假数据。现在,我有一个 url、一个 API token 和登录信息,我正在使用 WebRequest 获取数据并使用 StreamReader 将其流式传输到一个变量中,写入它,然后尝试返回它。

WebRequest req = WebRequest.Create(@"https://url.fortheapi.com/api/search/things?criteria=" + userInput);
req.Method = "GET";
req.Headers["username"] = "user";
req.Headers["password"] = "password";
req.Headers["token"] = "token";

StreamReader responseReader = new StreamReader(req.GetResponse().GetResponseStream());
var responseData = responseReader.ReadToEnd();

Response.WriteAsync(responseData);

return View(responseData);

这是我卡住的地方,因为我不确定如何将它作为模型数据传递给 View ,我目前没有模型,我想基于这个数据库制作一个并使用 Entity Framework 来处理就像我一直在本地数据库一样。如果有更好的方法,请随时提出。我会接受我现在能得到的所有帮助。

最佳答案

您需要创建 POCO 类来表示您从 api 调用中收到的数据。获得响应数据后,您可以简单地使用 javascript 序列化来反序列化对 POCO 类对象的响应。您可以将其传递给您的 View 。

public async Task<ActionResult> Contact()
{
    var req = WebRequest.Create(@"yourApiEndpointUrlHere");    
    var r = await req.GetResponseAsync().ConfigureAwait(false);              

    var responseReader = new StreamReader(r.GetResponseStream());
    var responseData = await responseReader.ReadToEndAsync();

    var d = Newtonsoft.Json.JsonConvert.DeserializeObject<MyData>(responseData);    
    return View(d);
}

假设你的 api 返回这样的 json 数据

{   "Code": "Test", "Name": "TestName" }

并且您已经创建了一个名为 MyData 的 POCO 类,它可用于表示从 api 返回的数据。您可以使用 json2csharp从您从 api 收到的 json 响应生成您的 C# 类。

public class MyData
{
   public string Code { get; set; }
   public string Name { set;get;}
   //Add other properties as needed
}

现在你的 View 应该是这个 POCO 类的强类型

@model MyData
<h2>@Model.Code</h2>
<h2>@Model.Name</h2>

关于c# - 使用 MVC 6 显示从 ASP.NET 5 中的 WebRequest 获取的 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35782833/

相关文章:

java - JSON 对象提取值

c# - 是否可以定义扩展运算符方法?

javascript - IE9 中对象为 null 或未定义错误

javascript - 获取给定值对应的其他值?

javascript - 如何将值数组作为键分配给另一个值数组?

ASP.net 表单复式输入

c# - 取出除最后一个满足条件的所有项目?

c# - 将对象类型返回为接口(interface) C#

C# 在类外部创建静态对象与在类内部创建静态对象有什么区别?

asp.net - DropDownListFor 并将我的 lambda 与我的 ViewModel 相关联