/// <summary> /// Reads the value from the <paramref name="jsonReader"/> /// </summary> /// <param name="jsonReader">The <see cref="IJsonReader"/> to read from.</param> /// <returns>The <see cref="IJsonValue"/> read.</returns> public static IJsonValue ReadAsJsonValue(this IJsonReader jsonReader) { //EdmUtil.CheckArgumentNull(jsonReader, "jsonReader"); // Supports to read from Begin if (jsonReader.NodeKind == JsonNodeKind.None) { jsonReader.Read(); } // Be noted: Json reader already verifies that value should be 'start array, start object or primitive value' // For any others, Json reader throws. So we don't care about other Node types. Debug.Assert( jsonReader.NodeKind == JsonNodeKind.StartArray || jsonReader.NodeKind == JsonNodeKind.StartObject || jsonReader.NodeKind == JsonNodeKind.PrimitiveValue, "json reader node type should be either start array, start object, or primitive value"); if (jsonReader.NodeKind == JsonNodeKind.StartArray) { return(jsonReader.ReadAsArray()); } else if (jsonReader.NodeKind == JsonNodeKind.StartObject) { return(jsonReader.ReadAsObject()); } return(jsonReader.ReadAsPrimitive()); }