Как импортировать JsonConvert в приложение C #?


98

Я создал проект библиотеки C #. В проекте есть эта строка в одном классе:

JsonConvert.SerializeObject(objectList);

Я получаю сообщение об ошибке

имя JsonConvert не существует в текущем контексте.

Чтобы исправить это, я добавил System.ServiceModel.Web.dllссылки, но безуспешно. Как я могу решить эту ошибку?

Ответы:


176

JsonConvertиз пространства имен Newtonsoft.Json, а неSystem.ServiceModel.Web

Используйте NuGetдля загрузкиpackage

«Проект» -> «Управление пакетами NuGet» -> «Найдите« newtonsoft json »-> нажмите« установить ».


вы создаете .NET Core WebApi или WebSite, см. мой ответ ниже
— Маурисио Грасиа Гутьеррес,

1
также убедитесь, что 'using Newtonsoft.Json;' есть там
— Dhanuka777 08

46

щелкните правой кнопкой мыши проект и выберите Manage NuGet Packages.. В нем выберите Json.NETи установите

После установки

используйте следующее пространство имен

using Newtonsoft.Json;

затем используйте следующее для десериализации

JsonConvert.DeserializeObject

Для ядра .net вам не нужно устанавливать newtonsoft - см. Мой ответ ниже
— Маурисио Грасиа Гутьеррес



6

Linux

Если вы используете Linux и .NET Core, см. Этот вопрос , вы захотите использовать

dotnet add package Newtonsoft.Json

А затем добавить

using Newtonsoft.Json;

любым классам, которым это нужно.


Для ядра .net вам не нужно устанавливать newtonsoft - см. Мой ответ ниже
— Маурисио Грасиа Гутьеррес


2

Если вы разрабатываете .Net Core WebApi или WebSite, вам не нужно устанавливать newtownsoft.json для выполнения сериализации / десериализации json.

Просто убедитесь, что ваш метод контроллера возвращает a 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 или WebSite, вам необходимо использовать 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://docs.microsoft.com/en-us/aspnet/core/web-api/advanced/formatting?view=aspnetcore-2.1


0

После установки пакета вам необходимо добавить newtonsoft.json.dll в путь сборки, выполнив текущую команду.

Прежде чем мы сможем использовать нашу сборку, мы должны добавить ее в глобальный кеш сборок (GAC). Снова откройте командную строку Visual Studio 2008 (для Vista / Windows7 / и т. Д. Откройте ее от имени администратора). И выполните следующую команду. gacutil /id:\myMethodsForSSIS\myMethodsForSSIS\bin\Release\myMethodsForSSIS.dll

перейдите по этой ссылке для получения дополнительной информации http://microsoft-ssis.blogspot.com/2011/05/referencing-custom-assembly-inside.html


0

Попробуйте это на C #. Оно работает:

var jsonObject = JsonConvert.DeserializeObject(File.ReadAllText(MyFilePath));

Импортируйте следующие пространства имен:

Для JsonConvert: using Newtonsoft.Json;

Для файла: using System.IO;

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.