[英]how to parse json data from a rest api using C# in the ASP.Net Core MVC model and display it on a HTML page
[英]Parse JSON data from URL in ASP.NET Core MVC using C# doesn't work
我尝试按照本教程进行操作:
https://fullstackdotnetcoder.blogspot.com/p/how-to-read-parse-json-data-from-url-in.html
但我对 ASP.NET MVC 和 Json.NET 的了解还不够,无法弄清楚我做错了什么或者我还需要做什么。 请帮助我,以便我更好地理解它。
我在 Visual Studio 中收到此错误:
错误:CS1061|File:objJson.cs|Line:16|'object' 不包含“DeserializeObject”的定义,并且找不到接受“object”类型的第一个参数的可访问扩展方法“DeserializeObject”(您是否缺少using 指令或程序集引用?)
这是我的 Json 结构类( RootObject.cs
):
namespace ProjectDemoJsonURL.Models.JsonModel
{
public class RootObject
{
public int userId { get; set; }
public int id { get; set; }
public string title { get; set; }
public bool completed { get; set; }
}
}
控制器 ( objJson.cs
)
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using System.Net;
namespace ProjectDemoJsonURL.Models.JsonModel
{
public class objJson : Controller
{
public object Converter { get; private set; }
public ActionResult GetJsonDataModel()
{
var webClient = new WebClient();
webClient.Headers.Add(HttpRequestHeader.Cookie, "cookievalue");
var json = webClient.DownloadString(@"https://jsonplaceholder.typicode.com/todos/1");
Models.JsonModel.RootObject objJson = Converter.DeserializeObject<Models.JsonModel.RootObject>(json);
return View(objJson);
}
}
}
显示我通过右键单击GetJsonDataModel()
( index.cshtml
) 创建的 Json 输出的视图:
@model ProjectDemoJsonURL.Models.JsonModel.RootObject
@{
ViewBag.Title = "GetJsonDataModel";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>GetJsonDataModel</h2>
@{
<table>
<tr>
<th>userId</th>
<th>id</th>
<th>title</th>
<th>completed</th>
</tr>
<tr>
<th>@Model.userId</th>
<th>@Model.id</th>
<th>@Model.title</th>
<th>@Model.completed</th>
</tr>
</table>
}
我按照本教程创建了一个有效的 ASP.NET Core 项目,我可以在其中了解它的工作原理并尝试不同的事情。
更改此行:
Models.JsonModel.RootObject objJson = Converter.DeserializeObject<Models.JsonModel.RootObject>(json);
回到
Models.JsonModel.RootObject objJson = JsonConvert.DeserializeObject<Models.JsonModel.RootObject>(json);
JsonConvert.DeserializeObject<T>
是一个静态方法,因此您不需要存在类实例:您可以直接从类型调用它。
然后,从控制器中删除之前对Converter
的定义。 在这种情况下,您不需要它,而且您也没有将其设置为一个值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.