using System.Collections.Generic;
using Newtonsoft.Json.Linq;
public static void Main()
""title"": ""ID Display Name""
""title"": ""Title Display name""
""title"": ""CUSTOM_123"",
""formLabel"": ""CUSTOM_123 Display Name""
IList<Field> fields = JsonConvert.DeserializeObject<IList<Field>>(json, new CustomJsonConverter());
Console.WriteLine(fields.ElementAt(0).Title);
Console.WriteLine(fields.ElementAt(1).Title);
Console.WriteLine(fields.ElementAt(2).Title);
Console.WriteLine(fields.ElementAt(3).Title);
public class CustomJsonConverter : JsonConverter
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
throw new NotImplementedException();
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
IList<Field> fields = new List<Field>();
JObject obj = JObject.Load(reader);
foreach (JToken child in obj.Children())
Field field = new Field();
JProperty fieldProp = (JProperty)child;
JObject fieldValue = (JObject)fieldProp.Value;
string fieldName = fieldProp.Name;
if (fieldName.StartsWith("CUSTOM_"))
field.Title = (string)fieldValue["formLabel"];
field.Type = (string)fieldValue["type"];
field.Title = (string)fieldValue["title"];
field.Type = (string)fieldValue["type"];
public override bool CanConvert(Type objectType)
public class FieldWrapper
public IList<Field> Fields