public static JToken ReadFrom(JsonReader reader)
{
ValidationUtils.ArgumentNotNull(reader, "reader");
if (reader.TokenType == JsonToken.None && !reader.Read())
{
throw new Exception("Error reading JToken from JsonReader.");
}
if (reader.TokenType == JsonToken.StartObject)
{
return(JObject.Load(reader));
}
if (reader.TokenType == JsonToken.StartArray)
{
return(JArray.Load(reader));
}
if (reader.TokenType == JsonToken.PropertyName)
{
return(JProperty.Load(reader));
}
if (reader.TokenType == JsonToken.StartConstructor)
{
return(JConstructor.Load(reader));
}
if (!JsonReader.IsStartToken(reader.TokenType))
{
return(new JValue(reader.Value));
}
throw new Exception("Error reading JToken from JsonReader. Unexpected token: {0}".FormatWith(CultureInfo.InvariantCulture, reader.TokenType));
}