Как добавить дополнительное свойство в сериализованную строку JSON с помощью json.net?

Я использую Json.net в своей программе MVC 4.

У меня предмет item classа Item .

Я сделал: string j = JsonConvert.SerializeObject(item);

Теперь я хочу добавить дополнительное свойство, например "feeClass" : "A" в j .

Как я могу использовать Json.net для достижения этого?

У вас есть несколько вариантов.

Самый простой способ, как предложил @Manvik, – просто добавить другое свойство в ваш class и установить его значение до сериализации.

Если вы не хотите этого делать, следующий простой способ – загрузить ваш объект в JObject , добавить новое значение свойства, а затем выписать JSON. Вот простой пример:

 class Item { public int ID { get; set; } public string Name { get; set; } } class Program { static void Main(string[] args) { Item item = new Item { ID = 1234, Name = "FooBar" }; JObject jo = JObject.FromObject(item); jo.Add("feeClass", "A"); string json = jo.ToString(); Console.WriteLine(json); } } 

Вот результат вышесказанного:

 { "ID": 1234, "Name": "FooBar", "feeClass": "A" } 

Другая возможность – создать пользовательский JsonConverter для вашего classа Item и использовать его во время сериализации. JsonConverter позволяет вам полностью контролировать то, что записывается во время процесса сериализации. Вы можете добавлять свойства, подавлять свойства, изменять имена свойств, даже выписывать другую структуру, если хотите. Для этой конкретной ситуации я думаю, что это, вероятно, слишком много, но это еще один вариант.

Вы можете использовать ExpandoObject. Отмените это, добавьте свою собственность и сериализуйте назад.

псевдокод:

 Expando obj = JsonConvert.Deserializeobject(jsonstring); obj.AddeProp = "somevalue"; string addedPropString = JsonConvert.Serializeobject(obj); 
  • C # JSON.NET - десериализация ответа, использующего необычную структуру данных
  • Json.Net: Html Помощник не регенерирует
  • Как десериализовать дочерний объект с динамическими (числовыми) именами клавиш?
  • Как десериализовать данные JSON?
  • Указание пользовательского формата DateTime при сериализации с помощью Json.Net
  • Ошибка при запуске JSON.NET при сериализации Mongo ObjectId
  • Deserialize json с известными и неизвестными полями
  • JSON.Net Обнаружен собственный цикл привязки
  • Как убедиться, что строка действительна JSON с использованием JSON.NET
  • Как десериализовать объект JObject для .NET
  • JToken: получить исходное / оригинальное значение JSON
  • Давайте будем гением компьютера.