Newtonsoft.Json.Schema.JsonSchemaBuilder.BuildSchema C# (CSharp) Method

BuildSchema() private method

private BuildSchema ( ) : JsonSchema
return JsonSchema
    private JsonSchema BuildSchema()
    {
      if (_reader.TokenType != JsonToken.StartObject)
        throw new Exception("Expected StartObject while parsing schema object, got {0}.".FormatWith(CultureInfo.InvariantCulture, _reader.TokenType));

      _reader.Read();
      // empty schema object
      if (_reader.TokenType == JsonToken.EndObject)
      {
        Push(new JsonSchema());
        return Pop();
      }

      string propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
      _reader.Read();
      
      // schema reference
      if (propertyName == JsonSchemaConstants.ReferencePropertyName)
      {
        string id = (string)_reader.Value;
        _reader.Read();
        JsonSchema referencedSchema = _resolver.GetSchema(id);
        if (referencedSchema == null)
          throw new Exception("Could not resolve schema reference for Id '{0}'.".FormatWith(CultureInfo.InvariantCulture, id));

        return referencedSchema;
      }

      // regular ol' schema object
      Push(new JsonSchema());

      ProcessSchemaProperty(propertyName);

      while (_reader.Read() && _reader.TokenType != JsonToken.EndObject)
      {
        propertyName = Convert.ToString(_reader.Value, CultureInfo.InvariantCulture);
        _reader.Read();

        ProcessSchemaProperty(propertyName);
      }

      return Pop();
    }