Yes, perhaps, here is an example with EN SO . You'll have to write your ContactResolver inherited from DefaultContractResolver and use it in JsonSerializerSettings for JsonConvert.
class LongNameContractResolver : DefaultContractResolver { protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization) { //базовый метод (тут в любом случае будет использован аттрибут JsonProperty) IList<JsonProperty> list = base.CreateProperties(type, memberSerialization); foreach (JsonProperty prop in list) { //Берем оригинальное имя поля prop.PropertyName = prop.UnderlyingName; } return list; } }
... JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Formatting = Formatting.Indented; if (useLongNames) { settings.ContractResolver = new LongNameContractResolver(); } return JsonConvert.SerializeObject(obj, settings);