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
|
|