У меня есть модель входной полезной нагрузки (JSON), которая содержит json-объект по имени «класс». Мне нужно создать класс сопоставления для JSON, но, поскольку он содержит ограниченное ключевое слово «класс» C#, я не могу его использовать.
ниже приведен JSON для отображения в классе C# -
"item": {
"items": [
{
"department": {
"id": "5",
"refName": "test"
},
"class": {
"id": "2",
"refName": "test"
}
}]}
Мне нужно использовать вышеуказанную полезную нагрузку для почтовой операции, но, поскольку она содержит ключевое слово «класс», я не могу ее использовать. как я могу этого добиться?
Поскольку это свойство родительского класса, вы сможете использовать атрибут [JsonProperty("class")] для сериализации/десериализации со специальным именем. На самом деле вам не нужно сопоставлять имя класса со свойством.
Этот вопрос похож на: Как изменить имена свойств при сериализации с помощью Json.net?. Если вы считаете, что это другое, отредактируйте вопрос, поясните, чем он отличается и/или как ответы на этот вопрос не помогают решить вашу проблему.





class — это резервное ключевое слово C#. Вместо этого вам следует работать с JsonPropertyAttribute (из Newtonsoft.Json) или JsonPropertyName (из System.Text.Json).
Для Newtonsoft.Json:
using Newtonsoft.Json;
[JsonProperty("class")]
public Class Class { get; set; }
Для System.Text.Json:
using System.Text.Json.Serialization;
[JsonPropertyName("class")]
public Class Class { get; set; }
Вы также можете использовать @class, если не хотите использовать атрибут JsonProperty.
Его можно прочитать здесь:
Ключевые слова — это предопределенные зарезервированные идентификаторы, которые имеют особое значение для компилятора. Их нельзя использовать в качестве идентификаторов в вашей программе, если они не содержат
@в качестве префикса. Например,@if— допустимый идентификатор, аif— нет, потому чтоif— ключевое слово.
Вы пробовали использовать JsonPropertyAttribute newtonsoft.com/json/help/html/jsonpropertyname.htm? Вы можете назвать этот класс как хотите и установить атрибут «класс».