У меня есть некоторые данные в объекте C # DataSet. Я могу сериализовать его прямо сейчас, используя конвертер Json.net, как это
DataSet data = new DataSet();
// do some work here to populate 'data'
string output = JsonConvert.SerializeObject(data);
Однако при этом используются имена свойств data
при печати в файл .json. Я хотел бы изменить имена свойств на что-то другое (скажем, изменить 'foo' на 'bar').
В документации Json.net в разделе «Сериализация и десериализация JSON» → «Атрибуты сериализации» говорится «JsonPropertyAttribute ... позволяет настраивать имя». Но нет примера. Кто-нибудь знает, как использовать JsonPropertyAttribute, чтобы изменить имя свойства на что-то еще?
( Прямая ссылка на документацию )
Документация Json.net кажется скудной. Если у вас есть отличный пример, я постараюсь добавить его в официальную документацию. Спасибо!
c#
serialization
json.net
culix
источник
источник
Ответы:
Вы можете украсить желаемое свойство, контролируя его имя
[JsonProperty]
атрибутом, который позволяет вам указать другое имя:Документация: атрибуты сериализации
источник
[JsonProperty("FooBar")]
Если у вас нет доступа к классам для изменения свойств или вы не хотите всегда использовать одно и то же свойство переименования, переименование также можно выполнить путем создания специального распознавателя.
Например, если у вас есть класс с именем
MyCustomObject
, у которого есть свойствоLongPropertyName
, вы можете использовать собственный распознаватель, как этот…Затем вызовите сериализацию и предоставьте преобразователь:
И результат будет сокращен до {"Short": "prop value"} вместо {"LongPropertyName": "prop value"}
Больше информации о пользовательских резольверах здесь
источник
DefaultContractResolver
Должен быть помещен в той же сборке , где используется метод JsonConvert.Serialize ().Есть еще один способ сделать это, используя конкретную NamingStrategy , которую можно применить к классу или свойству, украсив их с помощью
[JSonObject]
или[JsonProperty]
.Существуют предопределенные стратегии именования
CamelCaseNamingStrategy
, но вы можете реализовать свои собственные.Реализация различных стратегий именования может быть найдена здесь: https://github.com/JamesNK/Newtonsoft.Json/tree/master/Src/Newtonsoft.Json/Serialization
источник