我创建了一个 C# 库项目。该项目在一个类中有以下行:
JsonConvert.SerializeObject(objectList);
我收到错误说
名称 JsonConvert 在当前上下文中不存在。
为了解决这个问题,我在引用中添加了System.ServiceModel.Web.dll
,但没有运气。如何解决此错误?
JsonConvert
来自命名空间Newtonsoft.Json
,而不是System.ServiceModel.Web
使用NuGet
下载package
管理 NuGet 包" -> "搜索 "newtonsoft json"。->点击"安装"。
右键单击项目并选择Manage NuGet Packages..
在该选择Json.NET
并安装
安装后,
使用以下命名空间
using Newtonsoft.Json;
然后使用以下命令反序列化
JsonConvert.DeserializeObject
使用 NuGet 安装它:
Install-Package Newtonsoft.Json
将此作为答案发布。
Linux
如果您使用的是 Linux 和 .NET Core,请参阅此问题,您将需要使用
dotnet add package Newtonsoft.Json
然后添加
using Newtonsoft.Json;
到任何需要它的类。
,如果您使用的是dotnet Core,
添加到您的 .csproj 文件
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="9.0.1" />
</ItemGroup>
和
dotnet restore
如果您正在开发 .Net Core WebApi 或 WebSite,则不需要安装 newtownsoft.json 来执行 json 序列化/deserealize
只需确保控制器方法返回JsonResult
并调用return Json(<objectoToSerialize>);
,如以下示例所示
namespace WebApi.Controllers
{
[Produces("application/json")]
[Route("api/Accounts")]
public class AccountsController : Controller
{
// GET: api/Transaction
[HttpGet]
public JsonResult Get()
{
List<Account> lstAccounts;
lstAccounts = AccountsFacade.GetAll();
return Json(lstAccounts);
}
}
}
如果您正在开发.Net Framework WebApi或网站,则需要使用NuGet下载并安装newtonsoft json
包
管理 NuGet 包" -> "搜索 "newtonsoft json"。->点击"安装"。
namespace WebApi.Controllers
{
[Produces("application/json")]
[Route("api/Accounts")]
public class AccountsController : Controller
{
// GET: api/Transaction
[HttpGet]
public JsonResult Get()
{
List<Account> lstAccounts;
lstAccounts = AccountsFacade.GetAll();
//This line is different !!
return new JsonConvert.SerializeObject(lstAccounts);
}
}
}
更多细节可以在这里找到 - https://learn.microsoft.com/en-us/aspnet/core/web-api/advanced/formatting?view=aspnetcore-2.1
NuGet 包管理器 -> 包管理器控制台
PM> Install-Package Newtonsoft.Json
安装软件包后,您需要通过运行流命令将 newtonsoft.json.dll 添加到汇编路径中。
在使用程序集之前,必须将其添加到全局程序集缓存 (GAC) 中。再次打开 Visual Studio 2008 命令提示符(对于 Vista/Windows7/等,请以管理员身份打开它)。并执行以下命令。gacutil/i d:\myMethodsForSSIS\myMethodsForSSIS\bin\Release\myMethodsForSSIS
.dll通过此链接获取更多信息http://microsoft-ssis.blogspot.com/2011/05/referencing-custom-assembly-inside.html
请给出以下命令:
dotnet add package Newtonsoft.Json
然后它起作用了。