Вы можете десериализовать объект, используя Newtonsoft с пользовательской JsonConverter
.
Ваша структура JSON представляет собой объект JSON, который содержит несколько дочерних JSON объектов (полей). Поэтому при десериализации его до. NET вы можете создать отдельный класс для parent, который будет иметь список Fields
. Вы также можете изменить JSON на массив вместо объекта и десериализовать до List<Fields>
.
IList<Field> fields = JsonConvert.DeserializeObject<IList<Field>>(json, new CustomJsonConverter());
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"];
}
else
{
field.Title = (string)fieldValue["title"];
field.Type = (string)fieldValue["type"];
}
fields.Add(field);
}
return fields;
}
public override bool CanConvert(Type objectType)
{
return true;
}
}
public class Field
{
public string Title { get; set; }
public string Type{ get; set; }
}
https://dotnetfiddle.net/5bNihC