Как добавить дополнительное свойство в сериализованную строку 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); 
  • Может ли Json.NET сериализовать / десериализовать в / из streamа?
  • Невозможно сериализовать словарь с помощью сложного ключа с помощью Json.net
  • Как преобразовать escape-строку JSON в объект JSON?
  • Как получить json.net для сериализации членов classа, полученных из List ?
  • В чем разница между PreserveReferencesHandling и ReferenceLoopHandling в Json.Net?
  • JSON.NET: зачем использовать JToken - когда-либо?
  • Как я могу десериализовать JSON для простого словаря в ASP.NET?
  • Как игнорировать неизвестные значения enum во время десериализации json?
  • Дессериализация данных JSON на C # с использованием JSON.NET
  • Как я могу получить список ключей от Json.NET?
  • Как разобрать объект JSON на C #, если я заранее не знаю ключ?
  • Interesting Posts
    Давайте будем гением компьютера.