Я хочу иметь возможность исключить свойство при сериализации с использованием system.text.json.jsoneserializer. Я не хочу использовать атрибут jsonignore везде, где я хочу это сделать. Я хотел бы иметь возможность определить свойства, которые я хочу исключить только во время сериализации, с помощью какого -либо свободного API, которого в настоящее время не существует. SO: < /p>
var options = new JsonSerializerOptions();
options.Converters.Add(new BookConverter());
json = JsonSerializer.Serialize(book, options);
< /code>
В jsonconverter мне придется написать все представление JSON самостоятельно, используя UTF8JsonWriter < /code>, за исключением собственности, которое я не хочу сериализовать. Это большая работа, чтобы просто иметь возможность исключить собственность. В то время как JsonConverter-отличная функция расширяемости от команды .NET, он слишком низкий для моего варианта использования. Кто -нибудь знает о каком -либо другом способе достичь исключения собственности без необходимости выписывать представление JSON самостоятельно? private < /code> или защищен < /code> < /li>
Используйте стороннюю библиотеку, так как моя проблема решается, если я использую json.net. < /li>
< /ul>
Пример: < /p>
class Program
{
void Main()
{
// We want to serialize Book but to ignore the Author property
var book = new Book() { Id = 1, Name = "Calculus", Author = new Author() };
var json = JsonSerializer.Serialize(book);
// Default serialization, we get this:
// json = { "Id": 1, "Name": "Calculus", "Author": {} }
// Add our custom converter to options and pass it to the Serialize() method
var options = new JsonSerializerOptions();
options.Converters.Add(new BookConverter());
json = JsonSerializer.Serialize(book, options);
// I want to get this:
// json = { Id: 1, Name: "Calculus" }
}
}
public class Author { }
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public Author Author { get; set; }
}
public class BookConverter : JsonConverter
{
public override Book Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
// Use default implementation when deserializing (reading)
return JsonSerializer.Deserialize(ref reader, options);
}
public override void Write(Utf8JsonWriter writer, Book value, JsonSerializerOptions options)
{
// Serializing. Here we have to write the JSON representation ourselves
writer.WriteStartObject();
writer.WriteNumber("Id", value.Id);
writer.WriteString("Name", value.Name);
// Don't write Author so we can exclude it
writer.WriteEndObject();
}
}
Подробнее здесь: https://stackoverflow.com/questions/585 ... onserializ
Как исключить свойство из сериализации в System.text.json.jsonserializer.serialize () с использованием jsonconverter ⇐ C#
Место общения программистов C#
1758230177
Anonymous
Я хочу иметь возможность исключить свойство при сериализации с использованием system.text.json.jsoneserializer. Я не хочу использовать атрибут jsonignore везде, где я хочу это сделать. Я хотел бы иметь возможность определить свойства, которые я хочу исключить только во время сериализации, с помощью какого -либо свободного API, которого в настоящее время не существует. SO: < /p>
var options = new JsonSerializerOptions();
options.Converters.Add(new BookConverter());
json = JsonSerializer.Serialize(book, options);
< /code>
В jsonconverter мне придется написать все представление JSON самостоятельно, используя UTF8JsonWriter < /code>, за исключением собственности, которое я не хочу сериализовать. Это большая работа, чтобы просто иметь возможность исключить собственность. В то время как JsonConverter-отличная функция расширяемости от команды .NET, он слишком низкий для моего варианта использования. Кто -нибудь знает о каком -либо другом способе достичь исключения собственности без необходимости выписывать представление JSON самостоятельно? private < /code> или защищен < /code> < /li>
Используйте стороннюю библиотеку, так как моя проблема решается, если я использую json.net. < /li>
< /ul>
Пример: < /p>
class Program
{
void Main()
{
// We want to serialize Book but to ignore the Author property
var book = new Book() { Id = 1, Name = "Calculus", Author = new Author() };
var json = JsonSerializer.Serialize(book);
// Default serialization, we get this:
// json = { "Id": 1, "Name": "Calculus", "Author": {} }
// Add our custom converter to options and pass it to the Serialize() method
var options = new JsonSerializerOptions();
options.Converters.Add(new BookConverter());
json = JsonSerializer.Serialize(book, options);
// I want to get this:
// json = { Id: 1, Name: "Calculus" }
}
}
public class Author { }
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public Author Author { get; set; }
}
public class BookConverter : JsonConverter
{
public override Book Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
// Use default implementation when deserializing (reading)
return JsonSerializer.Deserialize(ref reader, options);
}
public override void Write(Utf8JsonWriter writer, Book value, JsonSerializerOptions options)
{
// Serializing. Here we have to write the JSON representation ourselves
writer.WriteStartObject();
writer.WriteNumber("Id", value.Id);
writer.WriteString("Name", value.Name);
// Don't write Author so we can exclude it
writer.WriteEndObject();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/58566735/how-to-exclude-a-property-from-being-serialized-in-system-text-json-jsonserializ[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия