Documentation
ΒΆ
Index ΒΆ
- Variables
- func ClampIndex(index, length int) int
- func Compact(dst *bytes.Buffer, src []byte) error
- func CompareJson(json1, json2 string) (bool, error)
- func ConvertFromScientific(s string) (string, error)
- func CreateEmptyContainer(containerType string) any
- func DeepCopy(data any) (any, error)
- func Delete(jsonStr, path string, opts ...*ProcessorOptions) (string, error)
- func DeleteWithCleanNull(jsonStr, path string, opts ...*ProcessorOptions) (string, error)
- func Encode(value any, config ...*EncodeConfig) (string, error)
- func EncodeCompact(value any, config ...*EncodeConfig) (string, error)
- func EncodePretty(value any, config ...*EncodeConfig) (string, error)
- func EscapeJSONPointer(s string) string
- func Foreach(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) error
- func ForeachNested(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) error
- func ForeachReturn(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) (string, error)
- func ForeachReturnNested(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) (string, error)
- func ForeachWithIterator(jsonStr string, callback ForeachCallbackWithIterator, ...) error
- func ForeachWithIteratorNested(jsonStr string, callback ForeachCallbackWithIterator, ...) error
- func ForeachWithPath(jsonStr string, path string, callback ForeachCallback, ...) error
- func ForeachWithPathNested(jsonStr string, path string, callback ForeachCallback, ...) error
- func FormatCompact(jsonStr string, opts ...*ProcessorOptions) (string, error)
- func FormatNumber(value any) string
- func FormatPretty(jsonStr string, opts ...*ProcessorOptions) (string, error)
- func Get(jsonStr, path string, opts ...*ProcessorOptions) (any, error)
- func GetArray(jsonStr, path string, opts ...*ProcessorOptions) ([]any, error)
- func GetArrayWithDefault(jsonStr, path string, defaultValue []any, opts ...*ProcessorOptions) []any
- func GetBool(jsonStr, path string, opts ...*ProcessorOptions) (bool, error)
- func GetBoolWithDefault(jsonStr, path string, defaultValue bool, opts ...*ProcessorOptions) bool
- func GetContainerSize(data any) int
- func GetFloat64(jsonStr, path string, opts ...*ProcessorOptions) (float64, error)
- func GetFloat64WithDefault(jsonStr, path string, defaultValue float64, opts ...*ProcessorOptions) float64
- func GetInt(jsonStr, path string, opts ...*ProcessorOptions) (int, error)
- func GetIntWithDefault(jsonStr, path string, defaultValue int, opts ...*ProcessorOptions) int
- func GetIterableValue[T any](iv *IterableValue, path string) (T, error)
- func GetIterableValueWithDefault[T any](iv *IterableValue, path string, defaultValue T) T
- func GetJSONValue[T JSONValue](jsonStr, path string, opts ...*ProcessorOptions) (T, error)
- func GetMultiple(jsonStr string, paths []string, opts ...*ProcessorOptions) (map[string]any, error)
- func GetNumeric[T Numeric](jsonStr, path string, opts ...*ProcessorOptions) (T, error)
- func GetObject(jsonStr, path string, opts ...*ProcessorOptions) (map[string]any, error)
- func GetObjectWithDefault(jsonStr, path string, defaultValue map[string]any, opts ...*ProcessorOptions) map[string]any
- func GetOrdered[T Ordered](jsonStr, path string, defaultValue T, opts ...*ProcessorOptions) T
- func GetString(jsonStr, path string, opts ...*ProcessorOptions) (string, error)
- func GetStringWithDefault(jsonStr, path, defaultValue string, opts ...*ProcessorOptions) string
- func GetTyped[T any](jsonStr, path string, opts ...*ProcessorOptions) (T, error)
- func GetTypedWithDefault[T any](jsonStr, path string, defaultValue T, opts ...*ProcessorOptions) T
- func GetTypedWithProcessor[T any](processor *Processor, jsonStr, path string, opts ...*ProcessorOptions) (T, error)
- func GetWithDefault(jsonStr, path string, defaultValue any, opts ...*ProcessorOptions) any
- func HTMLEscape(dst *bytes.Buffer, src []byte)
- func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error
- func IsContainer(data any) bool
- func IsInteger(s string) bool
- func IsLargeNumber(numStr string) bool
- func IsNumeric(s string) bool
- func IsScientificNotation(s string) bool
- func IsValidIndex(index, length int) bool
- func IsValidJson(jsonStr string) bool
- func IsValidPath(path string) bool
- func LoadFromFile(filename string) (string, error)
- func Marshal(v any) ([]byte, error)
- func MarshalIndent(v any, prefix, indent string) ([]byte, error)
- func MergeJson(json1, json2 string) (string, error)
- func MustTypeAssert[T any](value any, context string) T
- func NormalizeIndex(index, length int) int
- func ParseBool(s string) (bool, error)
- func ParseFloat(s string) (float64, error)
- func ParseInt(s string) (int, error)
- func PreservingUnmarshal(data []byte, v any, preserveNumbers bool) error
- func SafeConvertToInt64(value any) (int64, error)
- func SafeConvertToUint64(value any) (uint64, error)
- func SafeTypeAssert[T any](value any) (T, bool)
- func SanitizeKey(key string) string
- func SaveToFile(filePath string, data any, pretty ...bool) error
- func Set(jsonStr, path string, value any, opts ...*ProcessorOptions) (string, error)
- func SetGlobalProcessor(processor *Processor)
- func SetMultiple(jsonStr string, updates map[string]any, opts ...*ProcessorOptions) (string, error)
- func SetMultipleWithAdd(jsonStr string, updates map[string]any, opts ...*ProcessorOptions) (string, error)
- func SetWithAdd(jsonStr, path string, value any) (string, error)
- func ShutdownGlobalProcessor()
- func SmartNumberConversion(value any) any
- func TestProcessorResourcePools(processor *Processor) bool
- func TypeSafeConvert[T any](value any) (T, error)
- func UnescapeJSONPointer(s string) string
- func Unmarshal(data []byte, v any) error
- func Valid(data []byte) bool
- func ValidateConfig(config *Config) error
- func ValidateOptions(options *ProcessorOptions) error
- func ValidatePath(path string) error
- type ArrayExtensionError
- type ArrayExtensionNeededError
- type ArrayOperations
- type BatchOperation
- type BatchResult
- type BenchmarkHelper
- type CacheKey
- type CacheStats
- type CheckResult
- type ComplexDeleteProcessor
- type ConcurrencyManager
- type ConcurrencyStats
- type ConcurrencyTester
- type Config
- func (c *Config) AllowComments() bool
- func (c *Config) AreResourcePoolsEnabled() bool
- func (c *Config) GetCacheTTL() time.Duration
- func (c *Config) GetMaxCacheSize() int
- func (c *Config) GetMaxConcurrency() int
- func (c *Config) GetMaxJSONSize() int64
- func (c *Config) GetMaxNestingDepth() int
- func (c *Config) GetMaxPathDepth() int
- func (c *Config) GetMaxPoolSize() int
- func (c *Config) GetPoolCleanupInterval() time.Duration
- func (c *Config) GetRateLimitPerSec() int
- func (c *Config) GetSecurityLimits() map[string]interface{}
- func (c *Config) IsCacheEnabled() bool
- func (c *Config) IsHealthCheckEnabled() bool
- func (c *Config) IsMetricsEnabled() bool
- func (c *Config) IsRateLimitEnabled() bool
- func (c *Config) IsStrictMode() bool
- func (c *Config) PreserveNumbers() bool
- func (c *Config) ShouldCleanupNulls() bool
- func (c *Config) ShouldCompactArrays() bool
- func (c *Config) ShouldCreatePaths() bool
- func (c *Config) ShouldValidateFilePath() bool
- func (c *Config) ShouldValidateInput() bool
- type ConsecutiveExtractionGroup
- type CustomEncoder
- type DeadlockInfo
- type Decoder
- type DeepExtractionResult
- type DeleteOperations
- type DeletionTarget
- type Delim
- type DetailedStats
- type EncodeConfig
- type Encoder
- type ErrorType
- type ExtractionContext
- type ExtractionOperations
- type Float
- type ForeachCallback
- type ForeachCallbackWithIterator
- type HealthStatus
- type InvalidUnmarshalError
- type IterableValue
- func (iv *IterableValue) Break()
- func (iv *IterableValue) Continue()
- func (iv *IterableValue) Delete(path string) error
- func (iv *IterableValue) DeleteWithValidation(path string) error
- func (iv *IterableValue) Exists(path string) bool
- func (iv *IterableValue) ForeachNested(path string, callback ForeachCallback, opts ...*ProcessorOptions) error
- func (iv *IterableValue) ForeachReturnNested(path string, callback ForeachCallback, opts ...*ProcessorOptions) error
- func (iv *IterableValue) Get(path string) any
- func (iv *IterableValue) GetArray(path string) []any
- func (iv *IterableValue) GetArrayWithDefault(path string, defaultValue []any) []any
- func (iv *IterableValue) GetBool(path string) bool
- func (iv *IterableValue) GetBoolWithDefault(path string, defaultValue bool) bool
- func (iv *IterableValue) GetFloat64(path string) float64
- func (iv *IterableValue) GetFloat64WithDefault(path string, defaultValue float64) float64
- func (iv *IterableValue) GetInt(path string) int
- func (iv *IterableValue) GetInt64(path string) int64
- func (iv *IterableValue) GetInt64WithDefault(path string, defaultValue int64) int64
- func (iv *IterableValue) GetIntWithDefault(path string, defaultValue int) int
- func (iv *IterableValue) GetObject(path string) map[string]any
- func (iv *IterableValue) GetObjectWithDefault(path string, defaultValue map[string]any) map[string]any
- func (iv *IterableValue) GetString(path string) string
- func (iv *IterableValue) GetStringWithDefault(path, defaultValue string) string
- func (iv *IterableValue) GetWithDefault(path string, defaultValue any) any
- func (iv *IterableValue) IsEmpty(path string) bool
- func (iv *IterableValue) IsNull(path string) bool
- func (iv *IterableValue) Keys(path string) []string
- func (iv *IterableValue) Length(path string) int
- func (iv *IterableValue) Set(path string, value any) error
- func (iv *IterableValue) SetMultiple(updates map[string]any) error
- func (iv *IterableValue) SetWithAdd(path string, value any) error
- func (iv *IterableValue) String() string
- func (iv *IterableValue) Values(path string) []any
- type Iterator
- func (it *Iterator) Break()
- func (it *Iterator) Continue()
- func (it *Iterator) Delete(path string) error
- func (it *Iterator) Get(path string) (any, error)
- func (it *Iterator) GetCurrentKey() any
- func (it *Iterator) GetCurrentPath() string
- func (it *Iterator) GetCurrentValue() any
- func (it *Iterator) Set(path string, value any) error
- type IteratorControl
- type IteratorControlSignal
- type JSONValue
- type JsonsError
- func (e *JsonsError) Error() string
- func (e *JsonsError) ErrorWithSuggestion() string
- func (e *JsonsError) GetDetailedInfo() map[string]any
- func (e *JsonsError) Is(target error) bool
- func (e *JsonsError) Unwrap() error
- func (e *JsonsError) WithContext(key string, value any) *JsonsError
- func (e *JsonsError) WithErrorCode(code string) *JsonsError
- func (e *JsonsError) WithSuggestion(suggestion string) *JsonsError
- type Marshaler
- type MarshalerError
- type MemoryTracker
- type MetricsCollector
- type ModularProcessor
- type NavigationResult
- type Navigator
- type Number
- type NumberPreservingDecoder
- type NumberPreservingValue
- type Numeric
- type Operation
- type OperationContext
- type Ordered
- type PathInfo
- type PathParser
- type PathSegment
- type PathSegmentInfo
- type Processor
- func (p *Processor) ClearCache()
- func (p *Processor) Close() error
- func (p *Processor) Compact(jsonStr string, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) Delete(jsonStr, path string, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) EncodeBatch(pairs map[string]any, pretty bool, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) EncodeFields(value any, fields []string, pretty bool, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) EncodeStream(values any, pretty bool, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) EncodeStreamWithOptions(values any, encOpts *EncodeConfig, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) EncodeWithConfig(value any, config *EncodeConfig, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) EncodeWithOptions(value any, encOpts *EncodeConfig, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) EncodeWithTags(value any, pretty bool, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) Foreach(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) error
- func (p *Processor) ForeachReturn(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) ForeachWithIterator(jsonStr string, callback ForeachCallbackWithIterator, ...) error
- func (p *Processor) ForeachWithPath(jsonStr string, path string, callback ForeachCallback, ...) error
- func (p *Processor) FormatPretty(jsonStr string, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) Get(jsonStr, path string, opts ...*ProcessorOptions) (any, error)
- func (p *Processor) GetConfig() *Config
- func (p *Processor) GetHealthStatus() HealthStatus
- func (p *Processor) GetMultiple(jsonStr string, paths []string, opts ...*ProcessorOptions) (map[string]any, error)
- func (p *Processor) GetStats() Stats
- func (p *Processor) IsClosed() bool
- func (p *Processor) LoadFromFile(filePath string, opts ...*ProcessorOptions) (any, error)
- func (p *Processor) LoadFromReader(reader io.Reader, opts ...*ProcessorOptions) (any, error)
- func (p *Processor) Marshal(value any, opts ...*ProcessorOptions) ([]byte, error)
- func (p *Processor) MarshalIndent(value any, prefix, indent string, opts ...*ProcessorOptions) ([]byte, error)
- func (p *Processor) Parse(jsonStr string, target any, opts ...*ProcessorOptions) error
- func (p *Processor) ProcessBatch(operations []BatchOperation, opts ...*ProcessorOptions) ([]BatchResult, error)
- func (p *Processor) SafeGet(jsonStr, path string) TypeSafeAccessResult
- func (p *Processor) SaveToFile(filePath string, data any, pretty ...bool) error
- func (p *Processor) SaveToWriter(writer io.Writer, data any, pretty bool, opts ...*ProcessorOptions) error
- func (p *Processor) Set(jsonStr, path string, value any, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) SetLogger(logger *slog.Logger)
- func (p *Processor) SetMultiple(jsonStr string, updates map[string]any, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) ToJsonString(value any, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) ToJsonStringPretty(value any, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) ToJsonStringStandard(value any, opts ...*ProcessorOptions) (string, error)
- func (p *Processor) Unmarshal(data []byte, v any, opts ...*ProcessorOptions) error
- func (p *Processor) Valid(jsonStr string, opts ...*ProcessorOptions) (bool, error)
- func (p *Processor) ValidateSchema(jsonStr string, schema *Schema, opts ...*ProcessorOptions) ([]ValidationError, error)
- func (p *Processor) WarmupCache(jsonStr string, paths []string, opts ...*ProcessorOptions) (*WarmupResult, error)
- type ProcessorCache
- type ProcessorConfig
- type ProcessorError
- type ProcessorMetrics
- type ProcessorOptions
- type ProcessorUtils
- type PropertyAccessResult
- type RateLimiter
- type RecursiveProcessor
- type ResourceMonitor
- func (rm *ResourceMonitor) CheckForLeaks() []string
- func (rm *ResourceMonitor) GetMemoryEfficiency() float64
- func (rm *ResourceMonitor) GetPoolEfficiency() float64
- func (rm *ResourceMonitor) GetStats() ResourceStats
- func (rm *ResourceMonitor) RecordAllocation(bytes int64)
- func (rm *ResourceMonitor) RecordDeallocation(bytes int64)
- func (rm *ResourceMonitor) RecordOperation(duration time.Duration)
- func (rm *ResourceMonitor) RecordPoolEviction()
- func (rm *ResourceMonitor) RecordPoolHit()
- func (rm *ResourceMonitor) RecordPoolMiss()
- func (rm *ResourceMonitor) Reset()
- type ResourcePoolStats
- type ResourceStats
- type RootDataTypeConversionError
- type Schema
- func (s *Schema) HasMaxItems() bool
- func (s *Schema) HasMaxLength() bool
- func (s *Schema) HasMaximum() bool
- func (s *Schema) HasMinItems() bool
- func (s *Schema) HasMinLength() bool
- func (s *Schema) HasMinimum() bool
- func (s *Schema) SetExclusiveMaximum(exclusive bool) *Schema
- func (s *Schema) SetExclusiveMinimum(exclusive bool) *Schema
- func (s *Schema) SetMaxItems(maxItems int) *Schema
- func (s *Schema) SetMaxLength(maxLength int) *Schema
- func (s *Schema) SetMaximum(maximum float64) *Schema
- func (s *Schema) SetMinItems(minItems int) *Schema
- func (s *Schema) SetMinLength(minLength int) *Schema
- func (s *Schema) SetMinimum(minimum float64) *Schema
- type SetOperations
- type ShardStats
- type Signed
- type Stats
- type SyntaxError
- type TestDataGenerator
- type TestHelper
- func (h *TestHelper) AssertEqual(expected, actual any, msgAndArgs ...any)
- func (h *TestHelper) AssertError(err error, msgAndArgs ...any)
- func (h *TestHelper) AssertErrorContains(err error, contains string, msgAndArgs ...any)
- func (h *TestHelper) AssertFalse(condition bool, msgAndArgs ...any)
- func (h *TestHelper) AssertNil(value any, msgAndArgs ...any)
- func (h *TestHelper) AssertNoError(err error, msgAndArgs ...any)
- func (h *TestHelper) AssertNoPanic(fn func(), msgAndArgs ...any)
- func (h *TestHelper) AssertNotEqual(expected, actual any, msgAndArgs ...any)
- func (h *TestHelper) AssertNotNil(value any, msgAndArgs ...any)
- func (h *TestHelper) AssertPanic(fn func(), msgAndArgs ...any)
- func (h *TestHelper) AssertTrue(condition bool, msgAndArgs ...any)
- type TextMarshaler
- type TextUnmarshaler
- type Token
- type TypeSafeAccessResult
- type TypeSafeResult
- type UnmarshalTypeError
- type Unmarshaler
- type Unsigned
- type UnsupportedTypeError
- type UnsupportedValueError
- type ValidationError
- type WarmupResult
Constants ΒΆ
This section is empty.
Variables ΒΆ
var ( ErrPathNotFoundNew = &ProcessorError{Type: ErrTypeNavigation, Message: "path not found"} ErrInvalidPathNew = &ProcessorError{Type: ErrTypeValidation, Message: "invalid path"} ErrInvalidJSONNew = &ProcessorError{Type: ErrTypeValidation, Message: "invalid JSON"} ErrIndexOutOfBounds = &ProcessorError{Type: ErrTypeBoundary, Message: "index out of bounds"} ErrTypeConversionNew = &ProcessorError{Type: ErrTypeConversion, Message: "type conversion failed"} ErrTimeoutNew = &ProcessorError{Type: ErrTypeTimeout, Message: "operation timeout"} ErrRateLimitNew = &ProcessorError{Type: ErrTypeRateLimit, Message: "rate limit exceeded"} )
Common error variables for the new architecture
var ( ErrInvalidJSON = errors.New("invalid JSON format") ErrPathNotFound = errors.New("path not found") ErrTypeMismatch = errors.New("type mismatch") ErrSizeLimit = errors.New("size limit exceeded") ErrOperationFailed = errors.New("operation failed") ErrInvalidPath = errors.New("invalid path format") ErrUnsupportedPath = errors.New("unsupported path operation") ErrProcessorClosed = errors.New("processor is closed") ErrCacheFull = errors.New("cache is full") ErrCacheDisabled = errors.New("cache is disabled") ErrDepthLimit = errors.New("depth limit exceeded") ErrConcurrencyLimit = errors.New("concurrency limit exceeded") ErrSecurityViolation = errors.New("security violation detected") ErrRateLimitExceeded = errors.New("rate limit exceeded") ErrOperationTimeout = errors.New("operation timeout") ErrCircuitOpen = errors.New("circuit breaker is open") ErrDeadlockDetected = errors.New("potential deadlock detected") ErrResourceExhausted = errors.New("system resources exhausted") )
Error definitions - using sentinel errors for better performance and type safety
var DeletedMarker = &struct{ deleted bool }{deleted: true}
Special marker for deleted values
Functions ΒΆ
func ClampIndex ΒΆ
ClampIndex clamps an index to valid bounds for an array
func Compact ΒΆ
Compact appends to dst the JSON-encoded src with insignificant space characters elided. This function is 100% compatible with encoding/json.Compact.
func CompareJson ΒΆ
CompareJson compares two JSON strings for equality
func ConvertFromScientific ΒΆ
ConvertFromScientific converts a scientific notation string to regular number format
func CreateEmptyContainer ΒΆ
CreateEmptyContainer creates an empty container of the specified type
func Delete ΒΆ
func Delete(jsonStr, path string, opts ...*ProcessorOptions) (string, error)
Delete deletes a value from JSON at the specified path
func DeleteWithCleanNull ΒΆ
func DeleteWithCleanNull(jsonStr, path string, opts ...*ProcessorOptions) (string, error)
DeleteWithCleanNull removes a value from JSON and cleans up null values
func Encode ΒΆ
func Encode(value any, config ...*EncodeConfig) (string, error)
Encode converts any Go value to JSON string
func EncodeCompact ΒΆ
func EncodeCompact(value any, config ...*EncodeConfig) (string, error)
EncodeCompact converts any Go value to compact JSON string
func EncodePretty ΒΆ
func EncodePretty(value any, config ...*EncodeConfig) (string, error)
EncodePretty converts any Go value to pretty-formatted JSON string
func EscapeJSONPointer ΒΆ
EscapeJSONPointer escapes special characters for JSON Pointer
func Foreach ΒΆ
func Foreach(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) error
Foreach iterates over JSON data and calls the callback for each item This matches the user's expected usage: json.Foreach(jsonStr, func(key, item any) { ... }) Automatically detects nested calls and uses isolated processor to prevent state conflicts
func ForeachNested ΒΆ
func ForeachNested(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) error
ForeachNested iterates over JSON data with isolated processor instance for nested calls This prevents state conflicts when nesting Foreach calls
func ForeachReturn ΒΆ
func ForeachReturn(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) (string, error)
ForeachReturn iterates over JSON data and returns the modified JSON string Automatically detects nested calls and uses isolated processor to prevent state conflicts
func ForeachReturnNested ΒΆ
func ForeachReturnNested(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) (string, error)
ForeachReturnNested iterates over JSON data and returns the modified JSON string Uses isolated processor instance to prevent state conflicts in nested calls
func ForeachWithIterator ΒΆ
func ForeachWithIterator(jsonStr string, callback ForeachCallbackWithIterator, opts ...*ProcessorOptions) error
ForeachWithIterator iterates over JSON data with iterator access in callback Automatically detects nested calls and uses isolated processor to prevent state conflicts
func ForeachWithIteratorNested ΒΆ
func ForeachWithIteratorNested(jsonStr string, callback ForeachCallbackWithIterator, opts ...*ProcessorOptions) error
ForeachWithIteratorNested iterates over JSON data with iterator access using isolated processor
func ForeachWithPath ΒΆ
func ForeachWithPath(jsonStr string, path string, callback ForeachCallback, opts ...*ProcessorOptions) error
ForeachWithPath iterates over JSON data at a specific path This allows iteration over a subset of the JSON structure
func ForeachWithPathNested ΒΆ
func ForeachWithPathNested(jsonStr string, path string, callback ForeachCallback, opts ...*ProcessorOptions) error
ForeachWithPathNested iterates over JSON data at a specific path using isolated processor
func FormatCompact ΒΆ
func FormatCompact(jsonStr string, opts ...*ProcessorOptions) (string, error)
FormatCompact removes whitespace from JSON
func FormatNumber ΒΆ
FormatNumber formats a number without scientific notation when possible
func FormatPretty ΒΆ
func FormatPretty(jsonStr string, opts ...*ProcessorOptions) (string, error)
FormatPretty formats JSON with indentation
func Get ΒΆ
func Get(jsonStr, path string, opts ...*ProcessorOptions) (any, error)
Get retrieves a value from JSON at the specified path
func GetArrayWithDefault ΒΆ
func GetArrayWithDefault(jsonStr, path string, defaultValue []any, opts ...*ProcessorOptions) []any
func GetBoolWithDefault ΒΆ
func GetBoolWithDefault(jsonStr, path string, defaultValue bool, opts ...*ProcessorOptions) bool
func GetContainerSize ΒΆ
GetContainerSize returns the size of a container
func GetFloat64 ΒΆ
func GetFloat64(jsonStr, path string, opts ...*ProcessorOptions) (float64, error)
func GetFloat64WithDefault ΒΆ
func GetFloat64WithDefault(jsonStr, path string, defaultValue float64, opts ...*ProcessorOptions) float64
func GetIntWithDefault ΒΆ
func GetIntWithDefault(jsonStr, path string, defaultValue int, opts ...*ProcessorOptions) int
func GetIterableValue ΒΆ
func GetIterableValue[T any](iv *IterableValue, path string) (T, error)
GetIterableValue is a generic function that provides GetTyped functionality for IterableValue Usage: name, err := GetIterableValue[string](item, "name")
func GetIterableValueWithDefault ΒΆ
func GetIterableValueWithDefault[T any](iv *IterableValue, path string, defaultValue T) T
GetIterableValueWithDefault retrieves a typed value from IterableValue with a default fallback
func GetJSONValue ΒΆ
func GetJSONValue[T JSONValue](jsonStr, path string, opts ...*ProcessorOptions) (T, error)
GetJSONValue retrieves any valid JSON value with type constraints
func GetMultiple ΒΆ
GetMultiple retrieves multiple values from JSON using multiple path expressions
func GetNumeric ΒΆ
func GetNumeric[T Numeric](jsonStr, path string, opts ...*ProcessorOptions) (T, error)
GetNumeric retrieves a numeric value with modern generic constraints (alias for GetTyped)
func GetObject ΒΆ
func GetObject(jsonStr, path string, opts ...*ProcessorOptions) (map[string]any, error)
func GetObjectWithDefault ΒΆ
func GetOrdered ΒΆ
func GetOrdered[T Ordered](jsonStr, path string, defaultValue T, opts ...*ProcessorOptions) T
GetOrdered retrieves an ordered value with default fallback (alias for GetTypedWithDefault)
func GetStringWithDefault ΒΆ
func GetStringWithDefault(jsonStr, path, defaultValue string, opts ...*ProcessorOptions) string
Type-safe convenience functions with default values
func GetTyped ΒΆ
func GetTyped[T any](jsonStr, path string, opts ...*ProcessorOptions) (T, error)
GetTyped retrieves a typed value from JSON at the specified path
func GetTypedWithDefault ΒΆ
func GetTypedWithDefault[T any](jsonStr, path string, defaultValue T, opts ...*ProcessorOptions) T
GetTypedWithDefault retrieves a typed value with a default fallback
func GetTypedWithProcessor ΒΆ
func GetTypedWithProcessor[T any](processor *Processor, jsonStr, path string, opts ...*ProcessorOptions) (T, error)
GetTypedWithProcessor retrieves a typed value from JSON using a specific processor
func GetWithDefault ΒΆ
func GetWithDefault(jsonStr, path string, defaultValue any, opts ...*ProcessorOptions) any
GetWithDefault retrieves a value from JSON with a default fallback
func HTMLEscape ΒΆ
HTMLEscape appends to dst the JSON-encoded src with HTML-safe escaping. This function is 100% compatible with encoding/json.HTMLEscape.
func Indent ΒΆ
Indent appends to dst an indented form of the JSON-encoded src. This function is 100% compatible with encoding/json.Indent.
func IsContainer ΒΆ
IsContainer checks if the data is a container type (map or slice)
func IsLargeNumber ΒΆ
IsLargeNumber checks if a string represents a number that's too large for standard numeric types
func IsScientificNotation ΒΆ
IsScientificNotation checks if a string represents a number in scientific notation
func IsValidIndex ΒΆ
IsValidIndex checks if an index is valid for an array of given length
func IsValidJson ΒΆ
IsValidJson quickly checks if a string is valid JSON
func IsValidPath ΒΆ
IsValidPath checks if a path expression is valid with comprehensive validation
func LoadFromFile ΒΆ
LoadFromFile loads JSON data from a file
func Marshal ΒΆ
Marshal returns the JSON encoding of v. This function is 100% compatible with encoding/json.Marshal.
func MarshalIndent ΒΆ
MarshalIndent is like Marshal but applies indentation to format the output. This function is 100% compatible with encoding/json.MarshalIndent.
func MustTypeAssert ΒΆ
MustTypeAssert performs a type assertion that panics on failure (for internal use only)
func NormalizeIndex ΒΆ
NormalizeIndex normalizes an array index (handles negative indices)
func ParseFloat ΒΆ
ParseFloat parses a string to float64 with error handling
func PreservingUnmarshal ΒΆ
PreservingUnmarshal unmarshals JSON with number preservation
func SafeConvertToInt64 ΒΆ
SafeConvertToInt64 safely converts a value to int64, handling large numbers
func SafeConvertToUint64 ΒΆ
SafeConvertToUint64 safely converts a value to uint64, handling large numbers
func SafeTypeAssert ΒΆ
SafeTypeAssert performs a safe type assertion with error handling
func SanitizeKey ΒΆ
SanitizeKey sanitizes a key for safe use in maps
func SaveToFile ΒΆ
SaveToFile saves JSON data to a file with optional formatting Parameters:
- filePath: file path and name, creates directories if they don't exist
- data: JSON data to save (can be string, []byte, or any serializable data)
- pretty: optional parameter - true for formatted JSON, false for compact JSON (default: false)
func Set ΒΆ
func Set(jsonStr, path string, value any, opts ...*ProcessorOptions) (string, error)
Set sets a value in JSON at the specified path Returns:
- On success: modified JSON string and nil error
- On failure: original unmodified JSON string and error information
func SetGlobalProcessor ΒΆ
func SetGlobalProcessor(processor *Processor)
SetGlobalProcessor allows setting a custom global processor (thread-safe)
func SetMultiple ΒΆ
SetMultiple sets multiple values using a map of path-value pairs
func SetMultipleWithAdd ΒΆ
func SetMultipleWithAdd(jsonStr string, updates map[string]any, opts ...*ProcessorOptions) (string, error)
SetMultipleWithAdd sets multiple values with automatic path creation
func SetWithAdd ΒΆ
SetWithAdd sets a value with automatic path creation Returns:
- On success: modified JSON string and nil error
- On failure: original unmodified JSON string and error information
func ShutdownGlobalProcessor ΒΆ
func ShutdownGlobalProcessor()
ShutdownGlobalProcessor gracefully shuts down the global processor
func SmartNumberConversion ΒΆ
SmartNumberConversion provides intelligent number type conversion
func TestProcessorResourcePools ΒΆ
TestProcessorResourcePools tests processor resource pool functionality
func TypeSafeConvert ΒΆ
TypeSafeConvert attempts to convert a value to the target type safely
func UnescapeJSONPointer ΒΆ
UnescapeJSONPointer unescapes JSON Pointer special characters
func Unmarshal ΒΆ
Unmarshal parses the JSON-encoded data and stores the result in v. This function is 100% compatible with encoding/json.Unmarshal.
func ValidateConfig ΒΆ
ValidateConfig validates processor configuration with comprehensive checks
func ValidateOptions ΒΆ
func ValidateOptions(options *ProcessorOptions) error
ValidateOptions validates processor options with enhanced checks
func ValidatePath ΒΆ
ValidatePath validates a path expression and returns detailed error information
Types ΒΆ
type ArrayExtensionError ΒΆ
type ArrayExtensionError struct {
CurrentLength int
RequiredLength int
TargetIndex int
Value any
Message string
ExtendedArray []any // For storing pre-created extended arrays
}
ArrayExtensionError represents an error that signals array extension is needed
func (*ArrayExtensionError) Error ΒΆ
func (e *ArrayExtensionError) Error() string
type ArrayExtensionNeededError ΒΆ
type ArrayExtensionNeededError struct {
RequiredLength int
CurrentLength int
Start int
End int
Step int
Value any
}
ArrayExtensionNeededError indicates that an array needs to be extended
func (*ArrayExtensionNeededError) Error ΒΆ
func (e *ArrayExtensionNeededError) Error() string
type ArrayOperations ΒΆ
type ArrayOperations interface {
HandleArrayAccess(data any, index int) NavigationResult
HandleArraySlice(data any, start, end, step int) NavigationResult
ParseArrayIndex(indexStr string) int
HandleNegativeIndex(index, length int) int
ValidateArrayBounds(index, length int) bool
ExtendArray(arr []any, targetLength int) []any
SetArrayElement(arr []any, index int, value any) error
}
ArrayOperations interface for array-related operations
func NewArrayOperations ΒΆ
func NewArrayOperations(utils ProcessorUtils) ArrayOperations
NewArrayOperations creates a new array operations instance
type BatchOperation ΒΆ
type BatchOperation struct {
Type string `json:"type"` // "get", "set", "delete", "validate"
JSONStr string `json:"json_str"` // JSON string to operate on
Path string `json:"path"` // Path for the operation
Value any `json:"value"` // Value for set operations
ID string `json:"id"` // Unique identifier for this operation
}
BatchOperation represents a single operation in a batch
type BatchResult ΒΆ
type BatchResult struct {
ID string `json:"id"` // Operation ID
Result any `json:"result"` // Operation result
Error error `json:"error"` // Operation error, if any
}
BatchResult represents the result of a batch operation
type BenchmarkHelper ΒΆ
type BenchmarkHelper struct {
// contains filtered or unexported fields
}
BenchmarkHelper provides utilities for benchmark tests
func NewBenchmarkHelper ΒΆ
func NewBenchmarkHelper(b *testing.B) *BenchmarkHelper
NewBenchmarkHelper creates a new benchmark helper
func (*BenchmarkHelper) MeasureMemory ΒΆ
func (bh *BenchmarkHelper) MeasureMemory(fn func())
MeasureMemory measures memory allocations during benchmark
type CacheStats ΒΆ
type CacheStats struct {
HitCount int64 `json:"hit_count"` // Total cache hits
MissCount int64 `json:"miss_count"` // Total cache misses
TotalMemory int64 `json:"total_memory"` // Total memory usage in bytes
HitRatio float64 `json:"hit_ratio"` // Cache hit ratio
MemoryEfficiency float64 `json:"memory_efficiency"` // Memory efficiency (hits per MB)
Evictions int64 `json:"evictions"` // Total evictions performed
ShardCount int `json:"shard_count"` // Number of cache shards
ShardStats []ShardStats `json:"shard_stats"` // Per-shard statistics
}
CacheStats provides comprehensive cache statistics
type CheckResult ΒΆ
CheckResult represents the result of a single health check
type ComplexDeleteProcessor ΒΆ
type ComplexDeleteProcessor struct {
// contains filtered or unexported fields
}
ComplexDeleteProcessor handles complex path deletions with reverse mapping
func NewComplexDeleteProcessor ΒΆ
func NewComplexDeleteProcessor(p *Processor) *ComplexDeleteProcessor
NewComplexDeleteProcessor creates a new complex delete processor
func (*ComplexDeleteProcessor) DeleteWithReverseMapping ΒΆ
func (cdp *ComplexDeleteProcessor) DeleteWithReverseMapping(data any, path string) error
DeleteWithReverseMapping performs deletion using reverse mapping for complex paths
type ConcurrencyManager ΒΆ
type ConcurrencyManager struct {
// contains filtered or unexported fields
}
ConcurrencyManager manages concurrent operations with enhanced safety
func NewConcurrencyManager ΒΆ
func NewConcurrencyManager(maxConcurrency int, operationsPerSecond int) *ConcurrencyManager
NewConcurrencyManager creates a new concurrency manager
func (*ConcurrencyManager) DetectDeadlocks ΒΆ
func (cm *ConcurrencyManager) DetectDeadlocks() []DeadlockInfo
DetectDeadlocks detects potential deadlocks
func (*ConcurrencyManager) ExecuteWithConcurrencyControl ΒΆ
func (cm *ConcurrencyManager) ExecuteWithConcurrencyControl( ctx context.Context, operation func() error, timeout time.Duration, ) error
ExecuteWithConcurrencyControl executes a function with concurrency control
func (*ConcurrencyManager) GetStats ΒΆ
func (cm *ConcurrencyManager) GetStats() ConcurrencyStats
GetStats returns concurrency statistics
type ConcurrencyStats ΒΆ
type ConcurrencyStats struct {
MaxConcurrency int
CurrentOperations int64
TotalOperations int64
AverageWaitTime time.Duration
CircuitOpen bool
FailureCount int64
OperationsPerSecond int64
}
ConcurrencyStats represents concurrency statistics
type ConcurrencyTester ΒΆ
type ConcurrencyTester struct {
// contains filtered or unexported fields
}
ConcurrencyTester helps test concurrent operations
func NewConcurrencyTester ΒΆ
func NewConcurrencyTester(t *testing.T, concurrency, iterations int) *ConcurrencyTester
NewConcurrencyTester creates a new concurrency tester
func (*ConcurrencyTester) Run ΒΆ
func (ct *ConcurrencyTester) Run(operation func(workerID, iteration int) error)
Run runs concurrent test operations
type Config ΒΆ
type Config struct {
// Cache settings
MaxCacheSize int `json:"max_cache_size"` // Maximum number of cache entries
CacheTTL time.Duration `json:"cache_ttl"` // Time-to-live for cache entries
EnableCache bool `json:"enable_cache"` // Whether to enable caching
// Size limits
MaxJSONSize int64 `json:"max_json_size"` // Maximum JSON size in bytes
MaxPathDepth int `json:"max_path_depth"` // Maximum path depth
MaxBatchSize int `json:"max_batch_size"` // Maximum batch operation size
// Security limits (configurable)
MaxNestingDepthSecurity int `json:"max_nesting_depth_security"` // Maximum nesting depth for security validation (default: 50)
MaxSecurityValidationSize int64 `json:"max_security_validation_size"` // Maximum size for security validation in bytes (default: 100MB)
MaxObjectKeys int `json:"max_object_keys"` // Maximum number of keys in JSON objects (default: 10000)
MaxArrayElements int `json:"max_array_elements"` // Maximum number of elements in arrays (default: 10000)
// Concurrency settings
MaxConcurrency int `json:"max_concurrency"` // Maximum concurrent operations
ParallelThreshold int `json:"parallel_threshold"` // Threshold for parallel processing
// Processing options
EnableValidation bool `json:"enable_validation"` // Enable input validation
StrictMode bool `json:"strict_mode"` // Enable strict parsing mode
CreatePaths bool `json:"create_paths"` // Automatically create missing paths in Set operations
CleanupNulls bool `json:"cleanup_nulls"` // Remove null values after deletion operations
CompactArrays bool `json:"compact_arrays"` // Remove all null values from arrays (not just trailing)
// Additional options for interface compatibility
EnableMetrics bool `json:"enable_metrics"` // Enable metrics collection
EnableHealthCheck bool `json:"enable_health_check"` // Enable health checking
AllowCommentsFlag bool `json:"allow_comments"` // Allow JSON with comments
PreserveNumbersFlag bool `json:"preserve_numbers"` // Preserve number format
ValidateInput bool `json:"validate_input"` // Validate input
MaxNestingDepth int `json:"max_nesting_depth"` // Maximum nesting depth
EnableRateLimit bool `json:"enable_rate_limit"` // Enable rate limiting
RateLimitPerSec int `json:"rate_limit_per_sec"` // Rate limit per second
ValidateFilePath bool `json:"validate_file_path"` // Validate file paths
EnableResourcePools bool `json:"enable_resource_pools"` // Enable resource pools
MaxPoolSize int `json:"max_pool_size"` // Maximum pool size
PoolCleanupInterval time.Duration `json:"pool_cleanup_interval"` // Pool cleanup interval
}
Config holds configuration for the JSON processor
func DefaultConfig ΒΆ
func DefaultConfig() *Config
DefaultConfig returns a default configuration for the JSON processor
func HighSecurityConfig ΒΆ
func HighSecurityConfig() *Config
HighSecurityConfig returns a configuration with enhanced security settings
func LargeDataConfig ΒΆ
func LargeDataConfig() *Config
LargeDataConfig returns a configuration optimized for processing large JSON datasets Use with caution in production environments and ensure adequate system resources
func (*Config) AllowComments ΒΆ
func (*Config) AreResourcePoolsEnabled ΒΆ
func (*Config) GetCacheTTL ΒΆ
func (*Config) GetMaxCacheSize ΒΆ
func (*Config) GetMaxConcurrency ΒΆ
func (*Config) GetMaxJSONSize ΒΆ
func (*Config) GetMaxNestingDepth ΒΆ
func (*Config) GetMaxPathDepth ΒΆ
func (*Config) GetMaxPoolSize ΒΆ
func (*Config) GetPoolCleanupInterval ΒΆ
func (*Config) GetRateLimitPerSec ΒΆ
func (*Config) GetSecurityLimits ΒΆ
GetSecurityLimits returns a summary of current security limits
func (*Config) IsCacheEnabled ΒΆ
func (*Config) IsHealthCheckEnabled ΒΆ
func (*Config) IsMetricsEnabled ΒΆ
func (*Config) IsRateLimitEnabled ΒΆ
func (*Config) IsStrictMode ΒΆ
func (*Config) PreserveNumbers ΒΆ
func (*Config) ShouldCleanupNulls ΒΆ
func (*Config) ShouldCompactArrays ΒΆ
func (*Config) ShouldCreatePaths ΒΆ
func (*Config) ShouldValidateFilePath ΒΆ
func (*Config) ShouldValidateInput ΒΆ
type ConsecutiveExtractionGroup ΒΆ
type ConsecutiveExtractionGroup struct {
StartIndex int
EndIndex int
Segments []PathSegment
}
ConsecutiveExtractionGroup represents a group of consecutive extraction operations
type CustomEncoder ΒΆ
type CustomEncoder struct {
// contains filtered or unexported fields
}
CustomEncoder provides advanced JSON encoding with configurable options
func NewCustomEncoder ΒΆ
func NewCustomEncoder(config *EncodeConfig) *CustomEncoder
NewCustomEncoder creates a new custom encoder with the given configuration
func (*CustomEncoder) Close ΒΆ
func (e *CustomEncoder) Close()
Close releases the encoder's buffers back to the pool
type DeadlockInfo ΒΆ
DeadlockInfo represents information about a potential deadlock
type Decoder ΒΆ
type Decoder struct {
// contains filtered or unexported fields
}
Decoder reads and decodes JSON values from an input stream. This type is fully compatible with encoding/json.Decoder.
func NewDecoder ΒΆ
NewDecoder returns a new decoder that reads from r. This function is fully compatible with encoding/json.NewDecoder.
The decoder introduces its own buffering and may read data from r beyond the JSON values requested.
func (*Decoder) Buffered ΒΆ
Buffered returns a reader of the data remaining in the Decoder's buffer. The reader is valid until the next call to Decode.
func (*Decoder) Decode ΒΆ
Decode reads the next JSON-encoded value from its input and stores it in the value pointed to by v.
See the documentation for Unmarshal for details about the conversion of JSON into a Go value.
func (*Decoder) DisallowUnknownFields ΒΆ
func (dec *Decoder) DisallowUnknownFields()
DisallowUnknownFields causes the Decoder to return an error when the destination is a struct and the input contains object keys which do not match any non-ignored, exported fields in the destination.
func (*Decoder) InputOffset ΒΆ
InputOffset returns the input stream byte offset of the current decoder position. The offset gives the location of the end of the most recently returned token and the beginning of the next token.
func (*Decoder) More ΒΆ
More reports whether there is another element in the current array or object being parsed.
func (*Decoder) Token ΒΆ
Token returns the next JSON token in the input stream. At the end of the input stream, Token returns nil, io.EOF.
Token guarantees that the delimiters [ ] { } it returns are properly nested and matched: if Token encounters an unexpected delimiter in the input, it will return an error.
The input stream consists of zero or more JSON values, each separated by optional whitespace.
A Token holds one of these types:
Delim, for the four JSON delimiters [ ] { }
bool, for JSON booleans
float64, for JSON numbers
Number, for JSON numbers
string, for JSON string literals
nil, for JSON null
type DeepExtractionResult ΒΆ
type DeepExtractionResult struct {
Values []any
Paths []string // Optional: track the paths where values were found
}
DeepExtractionResult represents the result of a deep extraction operation
type DeleteOperations ΒΆ
type DeleteOperations interface {
DeleteValue(data any, path string) error
DeleteValueWithSegments(data any, segments []PathSegmentInfo) error
MarkForDeletion(data any, path string) error
CleanupDeletedValues(data any) any
CompactArray(arr []any) []any
}
DeleteOperations interface for deletion operations
func NewDeleteOperations ΒΆ
func NewDeleteOperations(utils ProcessorUtils, pathParser PathParser, navigator Navigator, arrayOps ArrayOperations) DeleteOperations
NewDeleteOperations creates a new delete operations instance
type DeletionTarget ΒΆ
type DeletionTarget struct {
Container any // The container (array or object) that holds the value to delete
Key any // The key (string for objects, int for arrays) to delete
Path string // The path to this target for debugging
}
DeletionTarget represents a specific location in the original data structure that needs to be deleted
type DetailedStats ΒΆ
type DetailedStats struct {
Stats Stats `json:"stats"`
// contains filtered or unexported fields
}
DetailedStats provides comprehensive processor statistics (internal debugging)
type EncodeConfig ΒΆ
type EncodeConfig struct {
Pretty bool `json:"pretty"`
Indent string `json:"indent"`
Prefix string `json:"prefix"`
EscapeHTML bool `json:"escape_html"`
SortKeys bool `json:"sort_keys"`
OmitEmpty bool `json:"omit_empty"`
ValidateUTF8 bool `json:"validate_utf8"`
MaxDepth int `json:"max_depth"`
DisallowUnknown bool `json:"disallow_unknown"`
// Number formatting options
PreserveNumbers bool `json:"preserve_numbers"` // Preserve original number format and avoid type conversion
FloatPrecision int `json:"float_precision"` // Precision for float formatting (-1 for automatic)
// Enhanced character escaping options
DisableEscaping bool `json:"disable_escaping"` // Disable all character escaping (except quotes and backslashes)
EscapeUnicode bool `json:"escape_unicode"` // Escape Unicode characters to \uXXXX format
EscapeSlash bool `json:"escape_slash"` // Escape forward slashes to \/
EscapeNewlines bool `json:"escape_newlines"` // Escape newlines to \n instead of literal newlines
EscapeTabs bool `json:"escape_tabs"` // Escape tabs to \t instead of literal tabs
// Null value handling
IncludeNulls bool `json:"include_nulls"` // Include null values in output (default: true)
// Custom escape characters
CustomEscapes map[rune]string `json:"custom_escapes,omitempty"` // Custom character escape mappings
}
EncodeConfig provides advanced encoding configuration (for complex use cases)
func DefaultEncodeConfig ΒΆ
func DefaultEncodeConfig() *EncodeConfig
DefaultEncodeConfig returns default encoding configuration
func NewCleanConfig ΒΆ
func NewCleanConfig() *EncodeConfig
NewCleanConfig creates a configuration that omits null and empty values
func NewCompactConfig ΒΆ
func NewCompactConfig() *EncodeConfig
NewCompactConfig creates a configuration for compact JSON
func NewPrettyConfig ΒΆ
func NewPrettyConfig() *EncodeConfig
NewPrettyConfig creates a configuration for pretty-printed JSON
func NewReadableConfig ΒΆ
func NewReadableConfig() *EncodeConfig
NewReadableConfig creates a configuration for human-readable JSON with minimal escaping
func NewWebSafeConfig ΒΆ
func NewWebSafeConfig() *EncodeConfig
NewWebSafeConfig creates a configuration for web-safe JSON
func (*EncodeConfig) Clone ΒΆ
func (c *EncodeConfig) Clone() *EncodeConfig
Clone creates a deep copy of the EncodeConfig
type Encoder ΒΆ
type Encoder struct {
// contains filtered or unexported fields
}
Encoder writes JSON values to an output stream. This type is fully compatible with encoding/json.Encoder.
func NewEncoder ΒΆ
NewEncoder returns a new encoder that writes to w. This function is fully compatible with encoding/json.NewEncoder.
func (*Encoder) Encode ΒΆ
Encode writes the JSON encoding of v to the stream, followed by a newline character.
See the documentation for Marshal for details about the conversion of Go values to JSON.
func (*Encoder) SetEscapeHTML ΒΆ
SetEscapeHTML specifies whether problematic HTML characters should be escaped inside JSON quoted strings. The default behavior is to escape &, <, and > to \u0026, \u003c, and \u003e to avoid certain safety problems that can arise when embedding JSON in HTML.
In non-HTML settings where the escaping interferes with the readability of the output, SetEscapeHTML(false) disables this behavior.
type ExtractionContext ΒΆ
type ExtractionContext struct {
OriginalContainers []any // Original containers that hold the target arrays
ArrayFieldName string // Name of the array field being operated on
TargetIndices []int // Target indices for each container
OperationType string // Type of operation: "get", "set", "delete"
}
ExtractionContext holds context for distributed operations
type ExtractionOperations ΒΆ
type ExtractionOperations interface {
// Basic extraction
HandleExtraction(data any, key string) (any, error)
ExtractFromArray(arr []any, key string) []any
ExtractFromObject(obj map[string]any, key string) (any, bool)
// Deep extraction
HandleDeepExtraction(data any, keys []string) (any, error)
HandleConsecutiveExtractions(data any, segments []PathSegmentInfo) (any, error)
DetectConsecutiveExtractions(segments []PathSegmentInfo) [][]PathSegmentInfo
// Mixed operations
HandleMixedExtractionOperations(data any, segments []PathSegmentInfo) (any, error)
// Utility functions
FlattenExtractionResults(data any) []any
IsExtractionPath(path string) bool
CountExtractions(path string) int
ValidateExtractionSyntax(path string) error
ExtractMultipleKeys(data any, keys []string) (map[string]any, error)
FilterExtractionResults(data any, predicate func(any) bool) []any
}
ExtractionOperations interface for extraction operations
func NewExtractionOperations ΒΆ
func NewExtractionOperations(utils ProcessorUtils) ExtractionOperations
NewExtractionOperations creates a new extraction operations instance
type ForeachCallback ΒΆ
type ForeachCallback func(key any, value *IterableValue)
ForeachCallback represents the callback function for iteration The value parameter is always *IterableValue, so no type assertion is needed
type ForeachCallbackWithIterator ΒΆ
ForeachCallbackWithIterator represents the callback function with iterator access
type HealthStatus ΒΆ
type HealthStatus struct {
Timestamp time.Time `json:"timestamp"`
Healthy bool `json:"healthy"`
Checks map[string]CheckResult `json:"checks"`
}
HealthStatus represents the health status of the processor
type InvalidUnmarshalError ΒΆ
InvalidUnmarshalError describes an invalid argument passed to Unmarshal. (The argument to Unmarshal must be a non-nil pointer.)
func (*InvalidUnmarshalError) Error ΒΆ
func (e *InvalidUnmarshalError) Error() string
type IterableValue ΒΆ
type IterableValue struct {
// contains filtered or unexported fields
}
IterableValue represents a value that supports Get operations like the user expects
func NewIterableValue ΒΆ
func NewIterableValue(data any, processor *Processor) *IterableValue
NewIterableValue creates a new IterableValue
func NewIterableValueWithIterator ΒΆ
func NewIterableValueWithIterator(data any, processor *Processor, iterator *Iterator) *IterableValue
NewIterableValueWithIterator creates a new IterableValue with iterator reference
func (*IterableValue) Break ΒΆ
func (iv *IterableValue) Break()
Break stops the entire iteration elegantly without requiring return
func (*IterableValue) Continue ΒΆ
func (iv *IterableValue) Continue()
Continue skips the current iteration elegantly without requiring return
func (*IterableValue) Delete ΒΆ
func (iv *IterableValue) Delete(path string) error
Delete deletes a value using path notation with unified behavior
func (*IterableValue) DeleteWithValidation ΒΆ
func (iv *IterableValue) DeleteWithValidation(path string) error
DeleteWithValidation deletes a value with path validation and suggestions
func (*IterableValue) Exists ΒΆ
func (iv *IterableValue) Exists(path string) bool
Exists checks if a path exists in the current item
func (*IterableValue) ForeachNested ΒΆ
func (iv *IterableValue) ForeachNested(path string, callback ForeachCallback, opts ...*ProcessorOptions) error
ForeachNested performs nested iteration on a sub-path with isolated processor This prevents state conflicts when performing nested iterations
func (*IterableValue) ForeachReturnNested ΒΆ
func (iv *IterableValue) ForeachReturnNested(path string, callback ForeachCallback, opts ...*ProcessorOptions) error
ForeachReturnNested performs nested iteration with modifications on a sub-path Returns the modified sub-structure and applies it back to the current item
func (*IterableValue) Get ΒΆ
func (iv *IterableValue) Get(path string) any
Get retrieves a value using path notation (like user expects: item.Get("name"))
func (*IterableValue) GetArray ΒΆ
func (iv *IterableValue) GetArray(path string) []any
GetArray retrieves an array value using path notation
func (*IterableValue) GetArrayWithDefault ΒΆ
func (iv *IterableValue) GetArrayWithDefault(path string, defaultValue []any) []any
GetArrayWithDefault retrieves an array value with a default fallback
func (*IterableValue) GetBool ΒΆ
func (iv *IterableValue) GetBool(path string) bool
GetBool retrieves a bool value using path notation
func (*IterableValue) GetBoolWithDefault ΒΆ
func (iv *IterableValue) GetBoolWithDefault(path string, defaultValue bool) bool
GetBoolWithDefault retrieves a bool value with a default fallback
func (*IterableValue) GetFloat64 ΒΆ
func (iv *IterableValue) GetFloat64(path string) float64
GetFloat64 retrieves a float64 value using path notation
func (*IterableValue) GetFloat64WithDefault ΒΆ
func (iv *IterableValue) GetFloat64WithDefault(path string, defaultValue float64) float64
GetFloat64WithDefault retrieves a float64 value with a default fallback
func (*IterableValue) GetInt ΒΆ
func (iv *IterableValue) GetInt(path string) int
GetInt retrieves an int value using path notation
func (*IterableValue) GetInt64 ΒΆ
func (iv *IterableValue) GetInt64(path string) int64
GetInt64 retrieves an int64 value using path notation
func (*IterableValue) GetInt64WithDefault ΒΆ
func (iv *IterableValue) GetInt64WithDefault(path string, defaultValue int64) int64
GetInt64WithDefault retrieves an int64 value with a default fallback
func (*IterableValue) GetIntWithDefault ΒΆ
func (iv *IterableValue) GetIntWithDefault(path string, defaultValue int) int
GetIntWithDefault retrieves an int value with a default fallback
func (*IterableValue) GetObject ΒΆ
func (iv *IterableValue) GetObject(path string) map[string]any
GetObject retrieves an object value using path notation
func (*IterableValue) GetObjectWithDefault ΒΆ
func (iv *IterableValue) GetObjectWithDefault(path string, defaultValue map[string]any) map[string]any
GetObjectWithDefault retrieves an object value with a default fallback
func (*IterableValue) GetString ΒΆ
func (iv *IterableValue) GetString(path string) string
GetString retrieves a string value using path notation
func (*IterableValue) GetStringWithDefault ΒΆ
func (iv *IterableValue) GetStringWithDefault(path, defaultValue string) string
GetStringWithDefault retrieves a string value with a default fallback
func (*IterableValue) GetWithDefault ΒΆ
func (iv *IterableValue) GetWithDefault(path string, defaultValue any) any
GetWithDefault retrieves a value with a default fallback
func (*IterableValue) IsEmpty ΒΆ
func (iv *IterableValue) IsEmpty(path string) bool
IsEmpty checks if a path contains an empty value (empty string, empty array, empty object)
func (*IterableValue) IsNull ΒΆ
func (iv *IterableValue) IsNull(path string) bool
IsNull checks if a path contains a null value
func (*IterableValue) Keys ΒΆ
func (iv *IterableValue) Keys(path string) []string
Keys returns the keys of an object at the given path
func (*IterableValue) Length ΒΆ
func (iv *IterableValue) Length(path string) int
Length returns the length of an array or object at the given path
func (*IterableValue) Set ΒΆ
func (iv *IterableValue) Set(path string, value any) error
Set sets a value using path notation
func (*IterableValue) SetMultiple ΒΆ
func (iv *IterableValue) SetMultiple(updates map[string]any) error
SetMultiple sets multiple values using path notation with a map of path-value pairs
func (*IterableValue) SetWithAdd ΒΆ
func (iv *IterableValue) SetWithAdd(path string, value any) error
SetWithAdd sets a value using path notation with automatic path creation This is equivalent to json.SetWithAdd() but works on the current iteration item
func (*IterableValue) String ΒΆ
func (iv *IterableValue) String() string
String returns the JSON string representation of the data
func (*IterableValue) Values ΒΆ
func (iv *IterableValue) Values(path string) []any
Values returns the values of an object or array at the given path
type Iterator ΒΆ
type Iterator struct {
// contains filtered or unexported fields
}
Iterator represents an iterator for JSON data with support for read/write operations
func NewIterator ΒΆ
func NewIterator(processor *Processor, data any, opts *ProcessorOptions) *Iterator
NewIterator creates a new iterator for the given JSON data
func (*Iterator) Break ΒΆ
func (it *Iterator) Break()
Break stops the entire iteration elegantly without requiring return
func (*Iterator) Continue ΒΆ
func (it *Iterator) Continue()
Continue skips the current iteration elegantly without requiring return
func (*Iterator) GetCurrentKey ΒΆ
GetCurrentKey returns the current key (index for arrays, property name for objects)
func (*Iterator) GetCurrentPath ΒΆ
GetCurrentPath returns the current path in dot notation
func (*Iterator) GetCurrentValue ΒΆ
GetCurrentValue returns the current value
type IteratorControl ΒΆ
type IteratorControl int
IteratorControl represents control flags for iteration
const ( IteratorNormal IteratorControl = iota // normal execution IteratorContinue // Continue current item and continue IteratorBreak // Break entire iteration )
type IteratorControlSignal ΒΆ
type IteratorControlSignal struct {
Type IteratorControl
}
IteratorControlSignal represents control flow signals for iteration
func (IteratorControlSignal) Error ΒΆ
func (ics IteratorControlSignal) Error() string
Error implements error interface for IteratorControlSignal
type JsonsError ΒΆ
type JsonsError struct {
Op string `json:"op"` // Operation that failed
Path string `json:"path"` // JSON path where error occurred
Message string `json:"message"` // Human-readable error message
Err error `json:"err"` // Underlying error
Context map[string]any `json:"context"` // Additional context information
Suggestions []string `json:"suggestions"` // Helpful suggestions for fixing the error
ErrorCode string `json:"error_code"` // Machine-readable error code
}
JsonsError represents a JSON processing error with enhanced context
func (*JsonsError) Error ΒΆ
func (e *JsonsError) Error() string
func (*JsonsError) ErrorWithSuggestion ΒΆ
func (e *JsonsError) ErrorWithSuggestion() string
ErrorWithSuggestion returns the error message with helpful suggestions
func (*JsonsError) GetDetailedInfo ΒΆ
func (e *JsonsError) GetDetailedInfo() map[string]any
GetDetailedInfo returns detailed error information including context
func (*JsonsError) Is ΒΆ
func (e *JsonsError) Is(target error) bool
Is implements error comparison for modern error handling
func (*JsonsError) Unwrap ΒΆ
func (e *JsonsError) Unwrap() error
Unwrap returns the underlying error for error wrapping support
func (*JsonsError) WithContext ΒΆ
func (e *JsonsError) WithContext(key string, value any) *JsonsError
WithContext adds context information to the error
func (*JsonsError) WithErrorCode ΒΆ
func (e *JsonsError) WithErrorCode(code string) *JsonsError
WithErrorCode sets a machine-readable error code
func (*JsonsError) WithSuggestion ΒΆ
func (e *JsonsError) WithSuggestion(suggestion string) *JsonsError
WithSuggestion adds a helpful suggestion to the error
type Marshaler ΒΆ
Marshaler is the interface implemented by types that can marshal themselves into valid JSON.
type MarshalerError ΒΆ
type MarshalerError struct {
Type reflect.Type
Err error
// contains filtered or unexported fields
}
MarshalerError represents an error from calling a MarshalJSON or MarshalText method.
func (*MarshalerError) Error ΒΆ
func (e *MarshalerError) Error() string
func (*MarshalerError) Unwrap ΒΆ
func (e *MarshalerError) Unwrap() error
type MemoryTracker ΒΆ
type MemoryTracker struct {
// contains filtered or unexported fields
}
MemoryTracker tracks memory usage during tests
func NewMemoryTracker ΒΆ
func NewMemoryTracker(name string) *MemoryTracker
NewMemoryTracker creates a new memory tracker
func (*MemoryTracker) Report ΒΆ
func (mt *MemoryTracker) Report(t *testing.T)
Report reports memory usage
type MetricsCollector ΒΆ
type MetricsCollector interface {
RecordOperation(duration time.Duration, success bool, cacheHit int)
RecordCacheHit()
RecordCacheMiss()
StartConcurrentOperation()
EndConcurrentOperation()
GetStats() map[string]any
}
MetricsCollector interface for collecting metrics
type ModularProcessor ΒΆ
type ModularProcessor interface {
// Core operations
Get(jsonStr, path string, opts ...*ProcessorOptions) (any, error)
Set(jsonStr, path string, value any, opts ...*ProcessorOptions) (string, error)
Delete(jsonStr, path string, opts ...*ProcessorOptions) (string, error)
// Batch operations
GetMultiple(jsonStr string, paths []string, opts ...*ProcessorOptions) (map[string]any, error)
BatchProcess(operations []BatchOperation, opts ...*ProcessorOptions) ([]BatchResult, error)
// Validation
Valid(jsonStr string, opts ...*ProcessorOptions) (bool, error)
// Configuration
SetConfig(config *ProcessorConfig)
GetConfig() *ProcessorConfig
// Lifecycle
Close() error
IsClosed() bool
}
ModularProcessor interface that combines all operation interfaces
func NewModularProcessor ΒΆ
func NewModularProcessor(config *ProcessorConfig) ModularProcessor
NewModularProcessor creates a new modular processor instance
type NavigationResult ΒΆ
type NavigationResult struct {
}
NavigationResult represents the result of a navigation operation
type Navigator ΒΆ
type Navigator interface {
}
Navigator interface for basic navigation operations
func NewNavigator ΒΆ
func NewNavigator(pathParser PathParser, utils ProcessorUtils) Navigator
NewNavigator creates a new navigator instance
type Number ΒΆ
type Number string
Number represents a JSON number literal.
type NumberPreservingDecoder ΒΆ
type NumberPreservingDecoder struct {
// contains filtered or unexported fields
}
NumberPreservingDecoder provides JSON decoding with optimized number format preservation
func NewNumberPreservingDecoder ΒΆ
func NewNumberPreservingDecoder(preserveNumbers bool) *NumberPreservingDecoder
NewNumberPreservingDecoder creates a new decoder with performance and number preservation
func (*NumberPreservingDecoder) DecodeToAny ΒΆ
func (d *NumberPreservingDecoder) DecodeToAny(jsonStr string) (any, error)
DecodeToAny decodes JSON string to any type with performance and number preservation
type NumberPreservingValue ΒΆ
type NumberPreservingValue struct {
Value any `json:"value"`
Original string `json:"original,omitempty"`
}
NumberPreservingValue wraps a value with its original string representation
func (NumberPreservingValue) IsNumber ΒΆ
func (npv NumberPreservingValue) IsNumber() bool
IsNumber checks if the value represents a number
func (NumberPreservingValue) String ΒΆ
func (npv NumberPreservingValue) String() string
String returns the string representation, preferring original if available
func (NumberPreservingValue) ToFloat64 ΒΆ
func (npv NumberPreservingValue) ToFloat64() (float64, error)
ToFloat64 converts the value to float64 if possible
func (NumberPreservingValue) ToInt ΒΆ
func (npv NumberPreservingValue) ToInt() (int, error)
ToInt converts the value to int if possible
type Numeric ΒΆ
type Numeric interface {
~int | ~int8 | ~int16 | ~int32 | ~int64 |
~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 |
~float32 | ~float64
}
Numeric represents all numeric types with improved constraint definition
type OperationContext ΒΆ
type OperationContext struct {
Context context.Context
Operation Operation
Path string
Value any
Options *ProcessorOptions
StartTime time.Time
CreatePaths bool
}
OperationContext contains context information for operations
type PathInfo ΒΆ
type PathInfo struct {
Segments []PathSegment `json:"segments"`
IsPointer bool `json:"is_pointer"`
OriginalPath string `json:"original_path"`
}
PathInfo contains parsed path information
type PathParser ΒΆ
type PathParser interface {
ParsePath(path string) ([]PathSegmentInfo, error)
ValidatePath(path string) error
SplitPathIntoSegments(path string) []PathSegmentInfo
PreprocessPath(path string) string
NeedsLegacyHandling(path string) bool
}
PathParser interface for parsing path strings
func NewPathParser ΒΆ
func NewPathParser() PathParser
NewPathParser creates a new path parser instance
type PathSegment ΒΆ
type PathSegment = internal.PathSegment
PathSegment represents a parsed path segment with its type and value This is an alias to the internal PathSegment for backward compatibility
type PathSegmentInfo ΒΆ
type PathSegmentInfo struct {
Type string
Value string
Key string
Index int
Start *int
End *int
Step *int
Extract string
IsFlat bool
}
PathSegmentInfo contains information about a parsed path segment
type Processor ΒΆ
type Processor struct {
// contains filtered or unexported fields
}
Processor is the main JSON processing engine with thread safety and performance optimization
func New ΒΆ
New creates a new JSON processor with the given configuration. If no configuration is provided, uses default configuration.
func (*Processor) Compact ΒΆ
func (p *Processor) Compact(jsonStr string, opts ...*ProcessorOptions) (string, error)
Compact removes whitespace from JSON string
func (*Processor) Delete ΒΆ
func (p *Processor) Delete(jsonStr, path string, opts ...*ProcessorOptions) (string, error)
Delete removes a value from JSON at the specified path
func (*Processor) EncodeBatch ΒΆ
func (p *Processor) EncodeBatch(pairs map[string]any, pretty bool, opts ...*ProcessorOptions) (string, error)
EncodeBatch encodes multiple key-value pairs as a JSON object
func (*Processor) EncodeFields ΒΆ
func (p *Processor) EncodeFields(value any, fields []string, pretty bool, opts ...*ProcessorOptions) (string, error)
EncodeFields encodes struct fields selectively based on field names
func (*Processor) EncodeStream ΒΆ
func (p *Processor) EncodeStream(values any, pretty bool, opts ...*ProcessorOptions) (string, error)
EncodeStream encodes multiple values as a JSON array stream
func (*Processor) EncodeStreamWithOptions ΒΆ
func (p *Processor) EncodeStreamWithOptions(values any, encOpts *EncodeConfig, opts ...*ProcessorOptions) (string, error)
EncodeStreamWithOptions encodes multiple values as a JSON array stream with advanced options
func (*Processor) EncodeWithConfig ΒΆ
func (p *Processor) EncodeWithConfig(value any, config *EncodeConfig, opts ...*ProcessorOptions) (string, error)
EncodeWithConfig converts any Go value to JSON string with full configuration control
func (*Processor) EncodeWithOptions ΒΆ
func (p *Processor) EncodeWithOptions(value any, encOpts *EncodeConfig, opts ...*ProcessorOptions) (string, error)
EncodeWithOptions converts any Go value to JSON string with advanced options
func (*Processor) EncodeWithTags ΒΆ
func (p *Processor) EncodeWithTags(value any, pretty bool, opts ...*ProcessorOptions) (string, error)
EncodeWithTags encodes struct with custom JSON tags handling
func (*Processor) Foreach ΒΆ
func (p *Processor) Foreach(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) error
Foreach iterates over JSON data using the processor The callback receives key and an IterableValue that supports Get() method
func (*Processor) ForeachReturn ΒΆ
func (p *Processor) ForeachReturn(jsonStr string, callback ForeachCallback, opts ...*ProcessorOptions) (string, error)
ForeachReturn iterates over JSON data and returns the modified JSON string
func (*Processor) ForeachWithIterator ΒΆ
func (p *Processor) ForeachWithIterator(jsonStr string, callback ForeachCallbackWithIterator, opts ...*ProcessorOptions) error
ForeachWithIterator iterates over JSON data with iterator access
func (*Processor) ForeachWithPath ΒΆ
func (p *Processor) ForeachWithPath(jsonStr string, path string, callback ForeachCallback, opts ...*ProcessorOptions) error
ForeachWithPath iterates over JSON data at a specific path
func (*Processor) FormatPretty ΒΆ
func (p *Processor) FormatPretty(jsonStr string, opts ...*ProcessorOptions) (string, error)
FormatPretty formats JSON string with indentation
func (*Processor) Get ΒΆ
func (p *Processor) Get(jsonStr, path string, opts ...*ProcessorOptions) (any, error)
Get retrieves a value from JSON using a path expression with performance
func (*Processor) GetHealthStatus ΒΆ
func (p *Processor) GetHealthStatus() HealthStatus
GetHealthStatus returns the current health status
func (*Processor) GetMultiple ΒΆ
func (p *Processor) GetMultiple(jsonStr string, paths []string, opts ...*ProcessorOptions) (map[string]any, error)
GetMultiple retrieves multiple values from JSON using multiple path expressions
func (*Processor) LoadFromFile ΒΆ
func (p *Processor) LoadFromFile(filePath string, opts ...*ProcessorOptions) (any, error)
LoadFromFile loads JSON data from a file
func (*Processor) LoadFromReader ΒΆ
LoadFromReader loads JSON data from an io.Reader with size limits
func (*Processor) Marshal ΒΆ
func (p *Processor) Marshal(value any, opts ...*ProcessorOptions) ([]byte, error)
Marshal converts any Go value to JSON bytes (similar to json.Marshal)
func (*Processor) MarshalIndent ΒΆ
func (p *Processor) MarshalIndent(value any, prefix, indent string, opts ...*ProcessorOptions) ([]byte, error)
MarshalIndent converts any Go value to indented JSON bytes (similar to json.MarshalIndent)
func (*Processor) Parse ΒΆ
func (p *Processor) Parse(jsonStr string, target any, opts ...*ProcessorOptions) error
Parse parses a JSON string into the provided target with improved error handling
func (*Processor) ProcessBatch ΒΆ
func (p *Processor) ProcessBatch(operations []BatchOperation, opts ...*ProcessorOptions) ([]BatchResult, error)
ProcessBatch processes multiple operations in a single batch
func (*Processor) SafeGet ΒΆ
func (p *Processor) SafeGet(jsonStr, path string) TypeSafeAccessResult
SafeGet performs a type-safe get operation with comprehensive error handling
func (*Processor) SaveToFile ΒΆ
SaveToFile saves data to a JSON file with automatic directory creation Parameters:
- filePath: file path and name, creates directories if they don't exist
- data: JSON data to save
- pretty: optional parameter - true for formatted JSON, false for compact JSON (default: false)
func (*Processor) SaveToWriter ΒΆ
func (p *Processor) SaveToWriter(writer io.Writer, data any, pretty bool, opts ...*ProcessorOptions) error
SaveToWriter saves data to an io.Writer
func (*Processor) Set ΒΆ
Set sets a value in JSON at the specified path Returns:
- On success: modified JSON string and nil error
- On failure: original unmodified JSON string and error information
func (*Processor) SetMultiple ΒΆ
func (p *Processor) SetMultiple(jsonStr string, updates map[string]any, opts ...*ProcessorOptions) (string, error)
SetMultiple sets multiple values in JSON using a map of path-value pairs Returns:
- On success: modified JSON string and nil error
- On failure: original unmodified JSON string and error information
func (*Processor) ToJsonString ΒΆ
func (p *Processor) ToJsonString(value any, opts ...*ProcessorOptions) (string, error)
ToJsonString converts any Go value to JSON string with HTML escaping (safe for web)
func (*Processor) ToJsonStringPretty ΒΆ
func (p *Processor) ToJsonStringPretty(value any, opts ...*ProcessorOptions) (string, error)
ToJsonStringPretty converts any Go value to pretty JSON string with HTML escaping
func (*Processor) ToJsonStringStandard ΒΆ
func (p *Processor) ToJsonStringStandard(value any, opts ...*ProcessorOptions) (string, error)
ToJsonStringStandard converts any Go value to compact JSON string without HTML escaping
func (*Processor) Unmarshal ΒΆ
func (p *Processor) Unmarshal(data []byte, v any, opts ...*ProcessorOptions) error
Unmarshal parses the JSON-encoded data and stores the result in the value pointed to by v. This method is fully compatible with encoding/json.Unmarshal.
func (*Processor) Valid ΒΆ
func (p *Processor) Valid(jsonStr string, opts ...*ProcessorOptions) (bool, error)
Valid validates JSON format without parsing the entire structure
func (*Processor) ValidateSchema ΒΆ
func (p *Processor) ValidateSchema(jsonStr string, schema *Schema, opts ...*ProcessorOptions) ([]ValidationError, error)
ValidateSchema validates JSON data against a schema
func (*Processor) WarmupCache ΒΆ
func (p *Processor) WarmupCache(jsonStr string, paths []string, opts ...*ProcessorOptions) (*WarmupResult, error)
WarmupCache pre-loads commonly used paths into cache to improve first-access performance
type ProcessorCache ΒΆ
type ProcessorCache interface {
Get(key CacheKey) (any, bool)
Set(key CacheKey, value any, ttl time.Duration)
Clear()
Size() int
}
ProcessorCache interface for caching operations
type ProcessorConfig ΒΆ
type ProcessorConfig struct {
EnableCache bool
EnableMetrics bool
MaxConcurrency int
Timeout time.Duration
RateLimitEnabled bool
RateLimitRPS int
MaxDepth int
MaxPathLength int
}
ProcessorConfig holds configuration for the processor
func DefaultProcessorConfig ΒΆ
func DefaultProcessorConfig() *ProcessorConfig
DefaultProcessorConfig returns a default configuration
type ProcessorError ΒΆ
type ProcessorError struct {
Type ErrorType
Operation string
Path string
Message string
Cause error
}
ProcessorError represents a structured error from the processor
func (*ProcessorError) Error ΒΆ
func (e *ProcessorError) Error() string
func (*ProcessorError) Unwrap ΒΆ
func (e *ProcessorError) Unwrap() error
type ProcessorMetrics ΒΆ
type ProcessorMetrics struct {
// Operation metrics
TotalOperations int64 `json:"total_operations"`
SuccessfulOperations int64 `json:"successful_operations"`
FailedOperations int64 `json:"failed_operations"`
SuccessRate float64 `json:"success_rate"`
// Cache metrics
CacheHits int64 `json:"cache_hits"`
CacheMisses int64 `json:"cache_misses"`
CacheHitRate float64 `json:"cache_hit_rate"`
// Performance metrics
AverageProcessingTime time.Duration `json:"average_processing_time"`
MaxProcessingTime time.Duration `json:"max_processing_time"`
MinProcessingTime time.Duration `json:"min_processing_time"`
// Memory metrics
TotalMemoryAllocated int64 `json:"total_memory_allocated"`
PeakMemoryUsage int64 `json:"peak_memory_usage"`
CurrentMemoryUsage int64 `json:"current_memory_usage"`
// Concurrency metrics
ActiveConcurrentOps int64 `json:"active_concurrent_ops"`
MaxConcurrentOps int64 `json:"max_concurrent_ops"`
// contains filtered or unexported fields
}
ProcessorMetrics provides comprehensive processor performance metrics
type ProcessorOptions ΒΆ
type ProcessorOptions struct {
Context context.Context `json:"-"` // Context for cancellation and timeouts
CacheResults bool `json:"cache_results"` // Whether to cache results
StrictMode bool `json:"strict_mode"` // Enable strict mode for this operation
MaxDepth int `json:"max_depth"` // Maximum recursion depth
AllowComments bool `json:"allow_comments"` // Allow JSON with comments
PreserveNumbers bool `json:"preserve_numbers"` // Preserve number format (avoid scientific notation)
CreatePaths bool `json:"create_paths"` // Override global CreatePaths setting for this operation
CleanupNulls bool `json:"cleanup_nulls"` // Remove null values after deletion operations
CompactArrays bool `json:"compact_arrays"` // Remove all null values from arrays (not just trailing)
ContinueOnError bool `json:"continue_on_error"` // Continue processing other operations even if some fail (for batch operations)
}
ProcessorOptions provides per-operation configuration
func DefaultOptions ΒΆ
func DefaultOptions() *ProcessorOptions
DefaultOptions returns default processor options
func (*ProcessorOptions) Clone ΒΆ
func (opts *ProcessorOptions) Clone() *ProcessorOptions
Clone creates a deep copy of ProcessorOptions
type ProcessorUtils ΒΆ
type ProcessorUtils interface {
IsArrayType(data any) bool
IsObjectType(data any) bool
IsEmptyContainer(data any) bool
DeepCopy(data any) (any, error)
GetDataType(data any) string
ConvertToMap(data any) (map[string]any, bool)
ConvertToArray(data any) ([]any, bool)
ConvertToString(value any) string
ConvertToNumber(value any) (float64, error)
}
ProcessorUtils interface for utility functions
func NewProcessorUtils ΒΆ
func NewProcessorUtils() ProcessorUtils
NewProcessorUtils creates a new processor utils instance
type PropertyAccessResult ΒΆ
PropertyAccessResult represents the result of a property access operation
type RateLimiter ΒΆ
RateLimiter interface for rate limiting
type RecursiveProcessor ΒΆ
type RecursiveProcessor struct {
// contains filtered or unexported fields
}
RecursiveProcessor implements true recursive processing for all operations
func NewRecursiveProcessor ΒΆ
func NewRecursiveProcessor(p *Processor) *RecursiveProcessor
NewRecursiveProcessor creates a new unified recursive processor
func (*RecursiveProcessor) ProcessRecursively ΒΆ
func (urp *RecursiveProcessor) ProcessRecursively(data any, path string, operation Operation, value any) (any, error)
ProcessRecursively performs recursive processing for any operation
func (*RecursiveProcessor) ProcessRecursivelyWithOptions ΒΆ
func (urp *RecursiveProcessor) ProcessRecursivelyWithOptions(data any, path string, operation Operation, value any, createPaths bool) (any, error)
ProcessRecursivelyWithOptions performs recursive processing with path creation options
type ResourceMonitor ΒΆ
type ResourceMonitor struct {
// contains filtered or unexported fields
}
ResourceMonitor provides enhanced resource monitoring and leak detection
func NewResourceMonitor ΒΆ
func NewResourceMonitor() *ResourceMonitor
NewResourceMonitor creates a new resource monitor
func (*ResourceMonitor) CheckForLeaks ΒΆ
func (rm *ResourceMonitor) CheckForLeaks() []string
CheckForLeaks performs leak detection and returns potential issues
func (*ResourceMonitor) GetMemoryEfficiency ΒΆ
func (rm *ResourceMonitor) GetMemoryEfficiency() float64
GetMemoryEfficiency returns memory efficiency as a percentage (0-100)
func (*ResourceMonitor) GetPoolEfficiency ΒΆ
func (rm *ResourceMonitor) GetPoolEfficiency() float64
GetPoolEfficiency returns pool efficiency as a percentage (0-100)
func (*ResourceMonitor) GetStats ΒΆ
func (rm *ResourceMonitor) GetStats() ResourceStats
GetStats returns current resource statistics
func (*ResourceMonitor) RecordAllocation ΒΆ
func (rm *ResourceMonitor) RecordAllocation(bytes int64)
RecordAllocation records memory allocation
func (*ResourceMonitor) RecordDeallocation ΒΆ
func (rm *ResourceMonitor) RecordDeallocation(bytes int64)
RecordDeallocation records memory deallocation
func (*ResourceMonitor) RecordOperation ΒΆ
func (rm *ResourceMonitor) RecordOperation(duration time.Duration)
RecordOperation records an operation with timing
func (*ResourceMonitor) RecordPoolEviction ΒΆ
func (rm *ResourceMonitor) RecordPoolEviction()
RecordPoolEviction records a pool eviction
func (*ResourceMonitor) RecordPoolHit ΒΆ
func (rm *ResourceMonitor) RecordPoolHit()
RecordPoolHit records a pool cache hit
func (*ResourceMonitor) RecordPoolMiss ΒΆ
func (rm *ResourceMonitor) RecordPoolMiss()
RecordPoolMiss records a pool cache miss
type ResourcePoolStats ΒΆ
type ResourcePoolStats struct {
StringBuilderPoolActive bool `json:"string_builder_pool_active"` // Whether string builder pool is active
PathSegmentPoolActive bool `json:"path_segment_pool_active"` // Whether path segment pool is active
}
ResourcePoolStats provides statistics about resource pools
type ResourceStats ΒΆ
type ResourceStats struct {
AllocatedBytes int64 // Total allocated bytes
FreedBytes int64 // Total freed bytes
PeakMemoryUsage int64 // Peak memory usage
PoolHits int64 // Pool cache hits
PoolMisses int64 // Pool cache misses
PoolEvictions int64 // Pool evictions
MaxGoroutines int64 // Maximum goroutines seen
CurrentGoroutines int64 // Current goroutine count
AvgResponseTime time.Duration // Average response time
TotalOperations int64 // Total operations processed
}
ResourceStats represents resource usage statistics
type RootDataTypeConversionError ΒΆ
RootDataTypeConversionError represents an error that signals root data type conversion is needed
func (*RootDataTypeConversionError) Error ΒΆ
func (e *RootDataTypeConversionError) Error() string
type Schema ΒΆ
type Schema struct {
Type string `json:"type,omitempty"`
Properties map[string]*Schema `json:"properties,omitempty"`
Items *Schema `json:"items,omitempty"`
Required []string `json:"required,omitempty"`
MinLength int `json:"minLength,omitempty"`
MaxLength int `json:"maxLength,omitempty"`
Minimum float64 `json:"minimum,omitempty"`
Maximum float64 `json:"maximum,omitempty"`
Pattern string `json:"pattern,omitempty"`
Format string `json:"format,omitempty"`
AdditionalProperties bool `json:"additionalProperties,omitempty"`
// Enhanced validation options
MinItems int `json:"minItems,omitempty"` // Minimum array items
MaxItems int `json:"maxItems,omitempty"` // Maximum array items
UniqueItems bool `json:"uniqueItems,omitempty"` // Array items must be unique
Enum []any `json:"enum,omitempty"` // Allowed values
Const any `json:"const,omitempty"` // Constant value
MultipleOf float64 `json:"multipleOf,omitempty"` // Number must be multiple of this
ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` // Minimum is exclusive
ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` // Maximum is exclusive
Title string `json:"title,omitempty"` // Schema title
Description string `json:"description,omitempty"` // Schema description
Default any `json:"default,omitempty"` // Default value
Examples []any `json:"examples,omitempty"` // Example values
// contains filtered or unexported fields
}
Schema represents a JSON schema for validation
func DefaultSchema ΒΆ
func DefaultSchema() *Schema
DefaultSchema returns a default schema configuration
func (*Schema) HasMaxItems ΒΆ
HasMaxItems returns true if MaxItems constraint is explicitly set
func (*Schema) HasMaxLength ΒΆ
HasMaxLength returns true if MaxLength constraint is explicitly set
func (*Schema) HasMaximum ΒΆ
HasMaximum returns true if Maximum constraint is explicitly set
func (*Schema) HasMinItems ΒΆ
HasMinItems returns true if MinItems constraint is explicitly set
func (*Schema) HasMinLength ΒΆ
HasMinLength returns true if MinLength constraint is explicitly set
func (*Schema) HasMinimum ΒΆ
HasMinimum returns true if Minimum constraint is explicitly set
func (*Schema) SetExclusiveMaximum ΒΆ
SetExclusiveMaximum sets the exclusive maximum flag
func (*Schema) SetExclusiveMinimum ΒΆ
SetExclusiveMinimum sets the exclusive minimum flag
func (*Schema) SetMaxItems ΒΆ
SetMaxItems sets the maximum items constraint for arrays
func (*Schema) SetMaxLength ΒΆ
SetMaxLength sets the maximum length constraint
func (*Schema) SetMaximum ΒΆ
SetMaximum sets the maximum value constraint
func (*Schema) SetMinItems ΒΆ
SetMinItems sets the minimum items constraint for arrays
func (*Schema) SetMinLength ΒΆ
SetMinLength sets the minimum length constraint
func (*Schema) SetMinimum ΒΆ
SetMinimum sets the minimum value constraint
type SetOperations ΒΆ
type SetOperations interface {
SetValue(data any, path string, value any, createPaths bool) error
SetValueWithSegments(data any, segments []PathSegmentInfo, value any, createPaths bool) error
CreatePath(data any, segments []PathSegmentInfo) error
HandleTypeConversion(data any, requiredType string) (any, error)
}
SetOperations interface for value setting operations
func NewSetOperations ΒΆ
func NewSetOperations(utils ProcessorUtils, pathParser PathParser, navigator Navigator, arrayOps ArrayOperations) SetOperations
NewSetOperations creates a new set operations instance
type ShardStats ΒΆ
type ShardStats struct {
Size int64 `json:"size"` // Number of entries in shard
Memory int64 `json:"memory"` // Memory usage of shard in bytes
}
ShardStats provides statistics for a single cache shard
type Stats ΒΆ
type Stats struct {
CacheSize int64 `json:"cache_size"` // Current cache size
CacheMemory int64 `json:"cache_memory"` // Cache memory usage in bytes
MaxCacheSize int `json:"max_cache_size"` // Maximum cache size
HitCount int64 `json:"hit_count"` // Cache hit count
MissCount int64 `json:"miss_count"` // Cache miss count
HitRatio float64 `json:"hit_ratio"` // Cache hit ratio
CacheTTL time.Duration `json:"cache_ttl"` // Cache TTL
CacheEnabled bool `json:"cache_enabled"` // Whether cache is enabled
IsClosed bool `json:"is_closed"` // Whether processor is closed
MemoryEfficiency float64 `json:"memory_efficiency"` // Memory efficiency (hits per MB)
OperationCount int64 `json:"operation_count"` // Total operations performed
ErrorCount int64 `json:"error_count"` // Total errors encountered
}
Stats provides processor performance statistics
type SyntaxError ΒΆ
type SyntaxError struct {
Offset int64 // error occurred after reading Offset bytes
// contains filtered or unexported fields
}
SyntaxError is a description of a JSON syntax error. Unmarshal will return a SyntaxError if the JSON can't be parsed.
func (*SyntaxError) Error ΒΆ
func (e *SyntaxError) Error() string
type TestDataGenerator ΒΆ
type TestDataGenerator struct {
// contains filtered or unexported fields
}
TestDataGenerator generates test data for various scenarios
func NewTestDataGenerator ΒΆ
func NewTestDataGenerator() *TestDataGenerator
NewTestDataGenerator creates a new test data generator
func (*TestDataGenerator) GenerateArrayJSON ΒΆ
func (g *TestDataGenerator) GenerateArrayJSON() string
GenerateArrayJSON generates JSON with various array structures
func (*TestDataGenerator) GenerateComplexJSON ΒΆ
func (g *TestDataGenerator) GenerateComplexJSON() string
GenerateComplexJSON generates complex nested JSON structures
func (*TestDataGenerator) GenerateInvalidJSON ΒΆ
func (g *TestDataGenerator) GenerateInvalidJSON() []string
GenerateInvalidJSON generates invalid JSON for error testing
func (*TestDataGenerator) GenerateSimpleJSON ΒΆ
func (g *TestDataGenerator) GenerateSimpleJSON() string
GenerateSimpleJSON generates simple JSON structures
type TestHelper ΒΆ
type TestHelper struct {
// contains filtered or unexported fields
}
TestHelper provides utilities for testing JSON operations
func NewTestHelper ΒΆ
func NewTestHelper(t *testing.T) *TestHelper
NewTestHelper creates a new test helper
func (*TestHelper) AssertEqual ΒΆ
func (h *TestHelper) AssertEqual(expected, actual any, msgAndArgs ...any)
AssertEqual checks if two values are equal
func (*TestHelper) AssertError ΒΆ
func (h *TestHelper) AssertError(err error, msgAndArgs ...any)
AssertError checks that error is not nil
func (*TestHelper) AssertErrorContains ΒΆ
func (h *TestHelper) AssertErrorContains(err error, contains string, msgAndArgs ...any)
AssertErrorContains checks that error contains specific text
func (*TestHelper) AssertFalse ΒΆ
func (h *TestHelper) AssertFalse(condition bool, msgAndArgs ...any)
AssertFalse checks that condition is false
func (*TestHelper) AssertNil ΒΆ
func (h *TestHelper) AssertNil(value any, msgAndArgs ...any)
AssertNil checks that value is nil
func (*TestHelper) AssertNoError ΒΆ
func (h *TestHelper) AssertNoError(err error, msgAndArgs ...any)
AssertNoError checks that error is nil
func (*TestHelper) AssertNoPanic ΒΆ
func (h *TestHelper) AssertNoPanic(fn func(), msgAndArgs ...any)
AssertNoPanic checks that function doesn't panic
func (*TestHelper) AssertNotEqual ΒΆ
func (h *TestHelper) AssertNotEqual(expected, actual any, msgAndArgs ...any)
AssertNotEqual checks if two values are not equal
func (*TestHelper) AssertNotNil ΒΆ
func (h *TestHelper) AssertNotNil(value any, msgAndArgs ...any)
AssertNotNil checks that value is not nil
func (*TestHelper) AssertPanic ΒΆ
func (h *TestHelper) AssertPanic(fn func(), msgAndArgs ...any)
AssertPanic checks that function panics
func (*TestHelper) AssertTrue ΒΆ
func (h *TestHelper) AssertTrue(condition bool, msgAndArgs ...any)
AssertTrue checks that condition is true
type TextMarshaler ΒΆ
TextMarshaler is the interface implemented by an object that can marshal itself into a textual form.
MarshalText encodes the receiver into UTF-8-encoded text and returns the result.
type TextUnmarshaler ΒΆ
TextUnmarshaler is the interface implemented by an object that can unmarshal a textual representation of itself.
UnmarshalText must be able to decode the form generated by MarshalText. UnmarshalText must copy the text if it wishes to retain the text after returning.
type Token ΒΆ
type Token any
Token holds a value of one of these types:
Delim, for the four JSON delimiters [ ] { }
bool, for JSON booleans
float64, for JSON numbers
Number, for JSON numbers
string, for JSON string literals
nil, for JSON null
type TypeSafeAccessResult ΒΆ
TypeSafeAccessResult represents the result of a type-safe access operation
func (TypeSafeAccessResult) AsBool ΒΆ
func (r TypeSafeAccessResult) AsBool() (bool, error)
AsBool safely converts the result to bool
func (TypeSafeAccessResult) AsInt ΒΆ
func (r TypeSafeAccessResult) AsInt() (int, error)
AsInt safely converts the result to int
func (TypeSafeAccessResult) AsString ΒΆ
func (r TypeSafeAccessResult) AsString() (string, error)
AsString safely converts the result to string
type TypeSafeResult ΒΆ
TypeSafeResult represents a type-safe operation result
func SafeGetTypedWithProcessor ΒΆ
func SafeGetTypedWithProcessor[T any](p *Processor, jsonStr, path string) TypeSafeResult[T]
SafeGetTypedWithProcessor performs a type-safe get operation with generic type constraints
func (TypeSafeResult[T]) Ok ΒΆ
func (r TypeSafeResult[T]) Ok() bool
Ok returns true if the result is valid (no error and exists)
func (TypeSafeResult[T]) Unwrap ΒΆ
func (r TypeSafeResult[T]) Unwrap() T
Unwrap returns the value or panics if there's an error
func (TypeSafeResult[T]) UnwrapOr ΒΆ
func (r TypeSafeResult[T]) UnwrapOr(defaultValue T) T
UnwrapOr returns the value or the provided default if there's an error or value doesn't exist
type UnmarshalTypeError ΒΆ
type UnmarshalTypeError struct {
Value string // description of JSON value - "bool", "array", "number -5"
Type reflect.Type // type of Go value it could not be assigned to
Offset int64 // error occurred after reading Offset bytes
Struct string // name of the root type containing the field
Field string // the full path from root node to the value
Err error // may be nil
}
UnmarshalTypeError describes a JSON value that was not appropriate for a value of a specific Go type.
func (*UnmarshalTypeError) Error ΒΆ
func (e *UnmarshalTypeError) Error() string
func (*UnmarshalTypeError) Unwrap ΒΆ
func (e *UnmarshalTypeError) Unwrap() error
type Unmarshaler ΒΆ
Unmarshaler is the interface implemented by types that can unmarshal a JSON description of themselves. The input can be assumed to be a valid encoding of a JSON value. UnmarshalJSON must copy the JSON data if it wishes to retain the data after returning.
By convention, to approximate the behavior of Unmarshal itself, Unmarshalers implement UnmarshalJSON([]byte("null")) as a no-op.
type UnsupportedTypeError ΒΆ
UnsupportedTypeError is returned by Marshal when attempting to encode an unsupported value type.
func (*UnsupportedTypeError) Error ΒΆ
func (e *UnsupportedTypeError) Error() string
type UnsupportedValueError ΒΆ
UnsupportedValueError is returned by Marshal when attempting to encode an unsupported value.
func (*UnsupportedValueError) Error ΒΆ
func (e *UnsupportedValueError) Error() string
type ValidationError ΒΆ
ValidationError represents a schema validation error
func ValidateSchema ΒΆ
func ValidateSchema(jsonStr string, schema *Schema, opts ...*ProcessorOptions) ([]ValidationError, error)
ValidateSchema validates JSON data against a schema
func (*ValidationError) Error ΒΆ
func (ve *ValidationError) Error() string
type WarmupResult ΒΆ
type WarmupResult struct {
TotalPaths int `json:"total_paths"` // Total number of paths processed
Successful int `json:"successful"` // Number of successfully warmed up paths
Failed int `json:"failed"` // Number of failed paths
SuccessRate float64 `json:"success_rate"` // Success rate as percentage (0-100)
FailedPaths []string `json:"failed_paths,omitempty"` // List of paths that failed (optional)
}
WarmupResult represents the result of a cache warmup operation
Source Files
ΒΆ
- array_handler.go
- array_operations.go
- concurrency_utils.go
- config.go
- custom_encoder.go
- deep_extraction.go
- delete.go
- delete_handler.go
- delete_operations.go
- encoder.go
- extraction_handler.go
- extraction_operations.go
- file.go
- interfaces.go
- iterator.go
- json.go
- modular_processor.go
- navigation_core.go
- navigation_utils.go
- navigator.go
- number_parser.go
- parser.go
- path_parser.go
- processor.go
- processor_core.go
- processor_utils.go
- recursive_processor.go
- resource_monitor.go
- set_handler.go
- set_operations.go
- stream.go
- test_helpers.go
- types.go
- utils.go
- validation.go
Directories
ΒΆ
| Path | Synopsis |
|---|---|
|
examples
|
|
|
basic
command
|
|
|
compatibility
command
|
|
|
comprehensive_validation
command
|
|
|
configuration
command
|
|
|
file_operations
command
|
|
|
flat_extraction
command
|
|
|
json_delete
command
|
|
|
json_encode
command
|
|
|
json_get
command
|
|
|
json_iteration
command
|
|
|
json_set
command
|
|
|
optional_config
command
|
|
|
thread_safety
command
|
|
|
writer_usage
command
|
|