using System.Collections.Generic;
using Newtonsoft.Json.Linq;
static void Main(string[] args)
List<NamePair> namePairs = new List<NamePair>
var settings = new JsonSerializerSettings();
settings.Converters.Add(new NamePairConverter());
settings.Formatting = Formatting.Indented;
var json = JsonConvert.SerializeObject(new {entities = namePairs}, settings);
var json2 = JsonConvert.SerializeObject(new Dictionary<string, string> {{"John", "Doe"}, {"Alex", "Steelflex"}},
Console.WriteLine(json2);
public string Name { get; set; }
public string Surname { get; set; }
class NamePairConverter : JsonConverter
public override object ReadJson(
JsonSerializer serializer
var obj = (JObject)JToken.ReadFrom(reader);
JProperty property = obj.Properties().FirstOrDefault();
Name = property.Value<string>()
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
var namePair = (NamePair) value;
[namePair.Surname] = namePair.Name
public override bool CanConvert(Type t)
return typeof(NamePair).IsAssignableFrom(t);
public override bool CanRead => true;