重写json.net中属性lvl处的ContractResolver

重写json.net中属性lvl处的ContractResolver,json,json.net,Json,Json.net,是否有任何方法可以重写元数据属性,使其不使用控制台写入行中指定的CamelCasePropertyNamesContractResolver 我不希望它更改我的元数据属性中的名称,但无法更改serialize对象中使用的序列化设置。当然,我可以在这个演示中看到,但这只是为了说明我的问题。下面的代码可以做到这一点,但是需要很多额外的代码来完成。如果没有其他人能想出更好的解决方案,这是可行的 { "metaData": { "exiF_TestSomthing": "Hello" }

是否有任何方法可以重写元数据属性,使其不使用控制台写入行中指定的CamelCasePropertyNamesContractResolver


我不希望它更改我的元数据属性中的名称,但无法更改serialize对象中使用的序列化设置。当然,我可以在这个演示中看到,但这只是为了说明我的问题。

下面的代码可以做到这一点,但是需要很多额外的代码来完成。如果没有其他人能想出更好的解决方案,这是可行的

{
  "metaData": {
    "exiF_TestSomthing": "Hello"
  }
}

您不想更改元数据或字典的键吗?或者两者都有?我不想EXIF变成EXIF
{
  "metaData": {
    "exiF_TestSomthing": "Hello"
  }
}
   public class IgnoreSettingsConverter : JsonConverter
    {

        public override bool CanConvert(Type objectType)
        {
           return true;
        }

        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)
        {
            var settings = new JsonSerializerSettings();
            var s = JsonSerializer.Create(settings);
            s.Serialize(writer, value);
        }
    }
    public class GDALInfoResult
    {
        public GDALInfoResult()
        {
            MetaData = new Dictionary<string, string>();

        }

        [JsonConverter(typeof(IgnoreSettingsConverter))]
        public Dictionary<string, string> MetaData { get; set; }


    }