protected T Visit(JToken token) { return(token switch { JObject jObject => Visit(jObject), JProperty jProperty => Visit(jProperty), JArray jArray => Visit(jArray), DoubleToken doubleToken => Visit(doubleToken), StringToken stringToken => Visit(stringToken), BooleanToken booleanToken => Visit(booleanToken), NullToken nullToken => Visit(nullToken), _ => default });
public static bool TryParseNumberToken(this string value, out Token numberToken) { if (value.Contains(".")) { var splitValue = value.Split('.', 'e', 'E'); if (splitValue.Length > 1 && splitValue[1].Length > 6) { if (!double.TryParse(value, out var d)) { numberToken = null; return(false); } numberToken = new DoubleToken(d); return(true); } if (!float.TryParse(value, out var f)) { numberToken = null; return(false); } numberToken = new FloatToken(f); return(true); } if (!long.TryParse(value, out var l)) { numberToken = null; return(false); } if (l >= int.MinValue && l <= int.MaxValue) { numberToken = new IntegerToken((int)l); return(true); } numberToken = new LongToken(l); return(true); }
public override string Visit(DoubleToken token) { return(token.ToString()); }