private DataType ParseEdmType() { JsonToken jsonToken = PopToken(); if (jsonToken.Type != JsonTokenType.String || jsonToken.GetStringValue() != "$t") { ThrowFormatException("Expecting type marker but found '{0}'", jsonToken.Type.ToString()); } Expect(JsonTokenType.Colon); Expect(JsonTokenType.Number); double doubleValue = currentToken.GetDoubleValue(); if (doubleValue % 1.0 != 0.0 || !edmTypeValues.Contains((int)doubleValue)) { ThrowFormatException("Invalid Edm type: {0}", doubleValue); } int result = (int)doubleValue; Expect(JsonTokenType.Comma); Expect("$v"); Expect(JsonTokenType.Colon); currentToken = PopToken(); currentValue = currentToken; Expect(JsonTokenType.EndObject); return((DataType)result); }
public double?ReadDouble() { ThrowIfDisposed(); ThrowIfInvalidState("ReadDouble", TableEntityReaderState.HasValue); ThrowIfInvalidType("ReadDouble", DataType.Double); if (currentValue.Type == JsonTokenType.Null) { return(null); } if (currentValue.Type == JsonTokenType.String) { return(double.Parse(currentValue.GetStringValue(), CultureInfo.InvariantCulture)); } EnsureMatchingTypes(currentValue.Type, JsonTokenType.Number); return(currentValue.GetDoubleValue()); }