Documentation
¶
Overview ¶
leptjson.go - Go语言版JSON库实现
这个包实现了一个简单的JSON解析器,支持基本的JSON值类型 包括null、true、false、数字和字符串等。后续版本将支持数组和对象。
字符串解析的特殊情况处理: 1. 基本规则:
- 字符串必须以双引号开始和结束
- 单引号是非法的
- 字符串中的双引号必须转义
- 空字符串""是合法的
2. 转义序列:
- 标准转义序列:\"、\\、\/、\b、\f、\n、\r、\t
- 其他转义序列都是非法的(如\v、\a等)
- 转义序列必须完整(如"\n"是合法的,但"\n"后面跟着其他字符是非法的)
3. Unicode处理:
- 支持\uXXXX格式的Unicode转义
- 支持UTF-16代理对(\uD800-\uDFFF)
- 代理对必须成对出现(高代理项后必须跟低代理项)
- 单独的低代理项是非法的
4. 控制字符处理:
- 所有小于0x20的控制字符必须转义
- 未转义的控制字符是非法的
5. 字符串长度限制:
- 理论上没有长度限制
- 但实际实现中可能受限于内存大小
6. 错误处理:
- PARSE_MISS_QUOTATION_MARK: 缺少右引号
- PARSE_INVALID_STRING_ESCAPE: 无效的转义序列
- PARSE_INVALID_STRING_CHAR: 无效的字符
- PARSE_INVALID_UNICODE_HEX: 无效的Unicode十六进制
- PARSE_INVALID_UNICODE_SURROGATE: 无效的Unicode代理对
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type ParseError ¶
type ParseError int
ParseError 表示解析过程中可能出现的错误
const ( PARSE_OK ParseError = iota // 解析成功 PARSE_EXPECT_VALUE // 期望一个值 PARSE_INVALID_VALUE // 无效的值 PARSE_ROOT_NOT_SINGULAR // 根节点不唯一 PARSE_NUMBER_TOO_BIG // 数字太大 PARSE_MISS_QUOTATION_MARK // 缺少引号 PARSE_INVALID_STRING_ESCAPE // 无效的转义序列 PARSE_INVALID_STRING_CHAR // 无效的字符 PARSE_INVALID_UNICODE_HEX // 无效的 Unicode 十六进制数字 PARSE_INVALID_UNICODE_SURROGATE // 无效的 Unicode 代理对 )
解析错误常量
func Parse ¶
func Parse(v *Value, json string) ParseError
Parse 解析JSON文本
接收一个Value指针和JSON字符串,解析JSON并将结果存储在Value中 返回解析过程中可能出现的错误
func (ParseError) String ¶
func (e ParseError) String() string
type Value ¶
type Value struct {
Type ValueType `json:"type"` // 值类型
N float64 `json:"n"` // 数字值(当Type为NUMBER时有效)
S string `json:"s"` // 字符串值(当Type为STRING时有效)
}
Value 表示一个JSON值
Click to show internal directories.
Click to hide internal directories.