jsonschema

package
v1.38.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2025 License: Apache-2.0 Imports: 6 Imported by: 148

Documentation

Overview

Package jsonschema provides very simple functionality for representing a JSON schema as a (nested) struct. This struct can be used with the chat completion "function call" feature. For more complicated schemas, it is recommended to use a dedicated JSON schema library and/or pass in the schema in []byte format.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Validate added in v1.29.0

func Validate(schema Definition, data any) bool

func VerifySchemaAndUnmarshal added in v1.29.0

func VerifySchemaAndUnmarshal(schema Definition, content []byte, v any) error

Types

type DataType

type DataType string
const (
	Object  DataType = "object"
	Number  DataType = "number"
	Integer DataType = "integer"
	String  DataType = "string"
	Array   DataType = "array"
	Null    DataType = "null"
	Boolean DataType = "boolean"
)

type Definition

type Definition struct {
	// Type specifies the data type of the schema.
	Type DataType `json:"type,omitempty"`
	// Description is the description of the schema.
	Description string `json:"description,omitempty"`
	// Enum is used to restrict a value to a fixed set of values. It must be an array with at least
	// one element, where each element is unique. You will probably only use this with strings.
	Enum []string `json:"enum,omitempty"`
	// Properties describes the properties of an object, if the schema type is Object.
	Properties map[string]Definition `json:"properties,omitempty"`
	// Required specifies which properties are required, if the schema type is Object.
	Required []string `json:"required,omitempty"`
	// Items specifies which data type an array contains, if the schema type is Array.
	Items *Definition `json:"items,omitempty"`
	// AdditionalProperties is used to control the handling of properties in an object
	// that are not explicitly defined in the properties section of the schema. example:
	// additionalProperties: true
	// additionalProperties: false
	// additionalProperties: jsonschema.Definition{Type: jsonschema.String}
	AdditionalProperties any `json:"additionalProperties,omitempty"`
}

Definition is a struct for describing a JSON Schema. It is fairly limited, and you may have better luck using a third-party library.

func GenerateSchemaForType added in v1.29.0

func GenerateSchemaForType(v any) (*Definition, error)

func (*Definition) MarshalJSON added in v1.14.0

func (d *Definition) MarshalJSON() ([]byte, error)

func (*Definition) Unmarshal added in v1.29.0

func (d *Definition) Unmarshal(content string, v any) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL