变更日志
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.8
- v1.3.7
- v1.3.6
- v1.3.5
- v1.3.4
- v1.3.3
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.1
- 添加一些
if v == nil以防止 panic
- 新增
Walk方法,用于深度优先遍历 JSON 结构中的所有子值 - 新增
ExtractAll函数,用于递归解析嵌套的 JSON 字符串 - 新增
MarshalWrite函数, 用于将 JSON 值序列化到字节流中
- 新增
v.At(...).Set(...)模式, 相比v.Set(...).At(...)模式不同的是将 key 放在前面
- 在 Get, Set, Append, Insert, Delete 等方法中, 允许传递一个切片参数, 用来标识 key 链
- 添加 GreaterThan, LessThan, GreaterThanOrEqual, LessThanOrEqual 方法用于数字比较
- 修复 Issue #30
- 修复 Issue #29
- 修复 Issue #26
发布 jsonvalue v1.3.4,相比 v1.3.3:
- 添加
*jsonvalue.V对以下接口的支持, 使之可以适配encoding/json:json.Marshaler、json.Unmarshalerencoding.BinaryMarshaler、encoding.BinaryUnmarshaler
Import和New函数支持导入实现了json.Marshaler和encoding.TextMarshaler的数据类型, 就像encoding/json一样 (#24)- 添加
MustAdd,MustAppend,MustInsert,MustSet,MustDelete等方法, 这些方法不返回子值和 error 信息- 可以避免 golangci-lint 的警告提示
- Bug 修复: 当
Append(xxx).InTheBeginning()时, 实际上追加到了末尾 - 在 Unmarshal 时, 通过预估对象 / 数组大小的方式预创建空间, 略微提升一点点速度, 以及节省平均约 40% 的 alloc 数
发布 jsonvalue v1.3.3,相比 v1.3.2:
- 发布英文 wiki。
- 修复了 #19 和 #22。
发布 jsonvalue 1.3.2,相比 1.3.1,主要是修复了 #17。
发布 jsonvalue 1.3.1,相比 1.3.0,改动如下:
- 支持获取 object 类型的键(key)的顺序
- 按照 key 被设置的顺序进行 object 的序列化
- 当序列化时,如果遇到 ASCII 的非可打印字符(包括控制字符),均进行
\u00XX转义
具体说明情参见 wiki
发布 v1.3.0,相比 v1.2.x,改动如下:
- 不再默认转义 % 字符
- 支持与原生 json 的转换,也即支持从
struct和其他类型中导入为 jsonvalue 类型,也支持将 jsonvalue 导出到 Go 标准类型中 - 支持类泛型操作,最直接的影响就是
Set, Append, Insert, Add, New等函数可以传入任意类型 - 新增
OptIndent函数以支持可视化锁进
具体说明情参见 wiki
发布 v1.2.1,相比 v1.2.1,改动如下:
- Marshal 时,允许不转义斜杠符号 '/',参见
OptEscapeSlash函数。 - Marshal 时,允许不转义几个 HTML 关键符号 (issue #13)。参见 OptEscapeHTML 函数
- Marshal 时,对于大于
\u00FF的字符,允许保留 UTF-8 编码,而不进行转义。参见 OptUTF8 函数 Append(...).InTheBeginning()和Append(...).InTheEnd()操作时,支持自动创建不存在的层级。但 insert 操作依然不会自动创建,这一点请留意- 支持设置默认序列化选项,请参见 SetDefaultMarshalOptions 函数
其他变更:
- CI 弃用 Travis-CI,改用 Github Actions
发布 v1.2.0,相比 v1.1.1,改动如下:
- 修复不支持科学计数法浮点数的 bug(issue #8)
- 添加详细的中文 wiki。
- Marshal 时的额外参数配置,原使用的是
Opt结构体,现推荐改为使用一个或多个OptXxx()函数 - 发布第一个不向前兼容的变更: 修改
NewFloat64和NewFloat32的入参- 原函数的
prec变量及相关功能改由NewFloat64f和NewFloat32f承担。
- 原函数的
- 添加
ForRangeArr和ForRangeObj以取代IterArray和IterObject函数,参见 wiki - 支持
SetEscapeHTML(issue11) - 当浮点值中出现
+/-NaN和+/-Inf时,支持进行特殊转换以符合 JSON 标准
发布 v1.1.1,相比 v1.1.0,变更如下:
- 无论是否错误,所有返回
*jsonvalue.V的函数都不会返回 nil。如果错误发生,那么至少会返回一个有效的*V实例,但是Type等于NotExist- 这样一来,程序员可以在代码中放心地直接使用返回的 *V 对象,简化代码,而忽略不必要的错误检查。
- 支持
MustGet函数,只返回*V而不返回 error 变量,便于一些级联的代码。 ValueType类型支持String()函数。