繁体   English   中英

使用 C# 从 ASP.NET Core MVC 中的 URL 解析 JSON 数据不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM