lolly/gjson/config.go
xfy 2734b04d8f refactor: remove 16.8k lines of dead code across all internal packages
- Delete unused files: tempfile subsystem, matcher variants, server/internal
- Remove 200+ unused functions across proxy, ssl, lua, http2/3, stream, variable
- Fix proxy test type errors (backgroundRefresh ctx→Request)
- Move bench/tools mock backend into internal/testutil
- Remove corresponding test functions for all deleted code
2026-06-03 16:15:43 +08:00

49 lines
1.5 KiB
Go

package gjson
// Default configuration values (matching lua-cjson defaults)
const (
defaultEncodeSparseConvert = false
defaultEncodeSparseRatio = 2
defaultEncodeSparseSafe = 10
defaultEncodeMaxDepth = 1000
defaultDecodeMaxDepth = 1000
defaultEncodeNumberPrecision = 14
defaultEncodeKeepBuffer = true
defaultEncodeSortKeys = false // 默认不排序,保持高性能
)
// sparseArrayConfig controls sparse array handling during encoding.
type sparseArrayConfig struct {
convert bool // true: convert to object, false: raise error
ratio int // sparse ratio threshold
safe int // safe threshold (arrays smaller than this are not checked)
}
// Config holds all configuration options for a GJSON instance.
type Config struct {
encodeSparseArray sparseArrayConfig
encodeMaxDepth int
decodeMaxDepth int
encodeNumberPrecision int
encodeKeepBuffer bool
encodeSortKeys bool // 是否对 object 键排序(稳定输出)
}
// defaultConfig returns a new Config with default values.
func defaultConfig() *Config {
return &Config{
encodeSparseArray: sparseArrayConfig{
convert: defaultEncodeSparseConvert,
ratio: defaultEncodeSparseRatio,
safe: defaultEncodeSparseSafe,
},
encodeMaxDepth: defaultEncodeMaxDepth,
decodeMaxDepth: defaultDecodeMaxDepth,
encodeNumberPrecision: defaultEncodeNumberPrecision,
encodeKeepBuffer: defaultEncodeKeepBuffer,
encodeSortKeys: defaultEncodeSortKeys,
}
}