コード例 #1
0
 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);
 }
コード例 #2
0
        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);
        }