Подтвердить что ты не робот

Пользовательская сериализация С# JSON

Есть ли способ/библиотека, которая позволит мне настроить сериализацию JSON, похожую на пользовательские сериализаторы GSON?

Вот что я пытаюсь получить:

этот объект: KeyValuePair ( "Возраст" , 10) myAge

обычно будет сериализоваться как

"myAge": {       "Ключ": "Возраст" ,       "Значение": 10  }

пока я хочу, чтобы он сериализовался как: "Возраст" : вместо 10. Любые идеи?

4b9b3361

Ответ 1

Сначала я предлагаю использовать newton json dll.

Во-вторых, вам нужно создать пользовательский JsonConverter для KeyValuePair следующим образом:

  public class PairConverter : JsonConverter
  {
    public override bool CanConvert(Type objectType)
    {
       return objectType == typeof(KeyValuePair<string, int>);
    }

    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 item = (KeyValuePair<string, int>)value;
      writer.WriteValue(item.Value);
      writer.Flush();
    }
  }

И чем добавить атрибут JsonConverter для свойства "Возраст", например:

 public class Persons
 {
   [JsonConverter(typeof(PairConverter))]
   public KeyValuePair<string, int> Age { get; set; }
 }

Наконец, пример использования:

 var persons = new Persons()
 {
    Age = new KeyValuePair<string, int>("Age", 10)
 };
 var json = JsonConvert.SerializeObject(persons); // {Age:10}