public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { HaParams returnValue = null; var deserializationErrorMessage = "Could not read ha-params value"; if (reader.TokenType == JsonToken.Integer) { returnValue = new HaParams {AssociatedHaMode = HaMode.Exactly, ExactlyCount = (long)reader.Value}; }else if (reader.TokenType == JsonToken.StartArray) { var potentialReturnValue = new HaParams {AssociatedHaMode = HaMode.Nodes}; var nodesList = new List<string>(); do { reader.Read(); if (!new[] {JsonToken.EndArray, JsonToken.String}.Contains(reader.TokenType)) { deserializationErrorMessage = "Could not read ha-params array value"; } else if(reader.TokenType == JsonToken.String) { nodesList.Add(reader.Value as string); } } while (reader.TokenType == JsonToken.String); potentialReturnValue.Nodes = nodesList.ToArray(); returnValue = potentialReturnValue; } if (returnValue != null) { return returnValue; } throw new JsonSerializationException(deserializationErrorMessage); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { HaParams returnValue = null; var deserializationErrorMessage = "Could not read ha-params value"; if (reader.TokenType == JsonToken.Integer) { returnValue = new HaParams { AssociatedHaMode = HaMode.Exactly, ExactlyCount = (long)reader.Value }; } else if (reader.TokenType == JsonToken.StartArray) { var potentialReturnValue = new HaParams { AssociatedHaMode = HaMode.Nodes }; var nodesList = new List <string>(); do { reader.Read(); if (!new[] { JsonToken.EndArray, JsonToken.String }.Contains(reader.TokenType)) { deserializationErrorMessage = "Could not read ha-params array value"; } else if (reader.TokenType == JsonToken.String) { nodesList.Add(reader.Value as string); } } while (reader.TokenType == JsonToken.String); potentialReturnValue.Nodes = nodesList.ToArray(); returnValue = potentialReturnValue; } if (returnValue != null) { return(returnValue); } throw new JsonSerializationException(deserializationErrorMessage); }