Я пытаюсь использовать настраиваемые типы объектов, модифицирующих конвертер, как описано here, а также CamelCasePropertyNamesContractResolver.Пользовательский конвертер overriding ContractResolver
Так преобразователь не так (ничего не делать здесь):
class MyJsonConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType.IsSubclassOf(typeof(MyType));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
JToken t = JToken.FromObject(value);
t.WriteTo(writer);
}
}
И я использую это так:
var jsonSerializationSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
jsonSerializationSettings.Converters.Add(new MyJsonConverter());
var camelCaseJsonOutput = await JsonConvert.SerializeObjectAsync(myObject, Formatting.None, jsonSerializationSettings);
Но сериализованные вывод показывает свойства, начиная с прописной, так кажется, что использование моего конвертера каким-то образом отменило верблюжонный конвертор ...
Спасибо за ваше полезное объяснение. То, что я пытаюсь достичь, - добавить специальное свойство к сериализованному объекту, когда он имеет определенный тип. Был бы какой-нибудь способ сделать это (вместе с верблюжьей оболочкой) без необходимости управлять всей сериализацией вручную? – ThomasWeiss
Отредактированный ответ с примером специального имущества – pil0t