I have a JSON like this:
[{
\"agencyId\": \"myCity\",
\"road\": {
\"note\": \"\",
\"lat\": \"45.321\",
\"lon\": \"12.21\",
The StringEnumConverter
expects only a single enumeration value. Because ChangeTypes
is an array, you need to annotate the property a little differently to make it work.
Try this instead:
[JsonProperty("changeTypes", ItemConverterType=typeof(StringEnumConverter))]
public ChangeType[] ChangeTypes { get; set; }
There is no need to write a custom JsonConverter for serializing/deserializing array of Enum. Instead of decorating individual property within parent model, just decorate the Enum with a StringEnumConverter JsonConverter attribute.
For eg:-
Following Environment model has Shelter enum property and array of enum Shelter[]
public class Environment
{
public string Name { get; set; }
public Shelter Shelter { get; set; }
public Shelter[] Shelters { get; set; }
}
[JsonConverter(typeof(StringEnumConverter))]
public enum Shelter
{
Indoor,
Outdoor
}
Output json:-
{
"name": "",
"shelter": "Indoor",
"shelters": [
"Indoor",
"Outdoor"
]
}