原文:《支持注释的JSON解析工具: bao-json (js)》
- JavaScript 编写.
- 支持注释.
- 参考 alibaba FastJson 工具库(Java), 纯手撸.
为什么'我'值得你关注?
- 我是有灵魂的: 支持注释解析. 目前为止, 我还没有找到一款支持注释的JSON解析工具 (工具库或界面工具). JSON格式化的工具倒是一抓一大把, 然而, 作为码农, json文本在构思和交流中很方便, 后续经常需要将 json 转 javabean 或其他语言的结构体, 重要的是, 不想丢失 json 中的'注释'. json 文本中的注释内容直接转成了 Javadoc 不香吗!
- 如果你对 json 解析原理或手撸 json 解析感兴趣, 我或许能够帮到你. 因为我是参考 Java 的 FastJson 简化而来. 功能阉割, 代码极度简化. 这对于了解 json 解析的核心流程很方便.
使用介绍
以 Vue 项目中为例:
import {parse, ParseContext} from "bao-json";
// 准备json例子: 含有注释, 注释中含有 '@' 打头的特殊标记 (我称之为 schemaDescriptor)
const json = `/**
* 王者英雄
* @author L&J
* @sine 2022-3-28 03:03:52
*/
{
// 姓名 @required
"name": "张飞",
// 年龄
// @minimum 1
// @maximum 100
"age": 123,
// 经济
"money": 98700.123,
// 是否是坦克
"isTanke": true,
// 生日 @mock \@datetime("yyyy-MM-dd HH:mm:ss")
"birthday": "2022-3-27 23:39:45"
}`;
// 解析得到 ParseContext, 接下来您可以基于这个解析结果做您想做的事情
const parseContext: ParseContext = parse(json);
console.log(parseContext); // 图1
// 进一步可以解析 commentMeta, 默认不解析, parseContext.commentMeta 是null
// 解析后, parseContext.commentMeta 字段有值
const commentMeta = parseContext.parseComment();
console.log(commentMeta); // 图2
CommentMeta:
- schemaDescriptor : 将注释中 '@' 打头的标记解析成 k-v 格式, 暂仅支持有限的标记. (参考 Json Schema)
- comment : 注释原文
- pureComment : 去掉注释标识符 '//','/*','*/', '*' 后的内容
应用案例
Nisus-Liu/bao-tool: 程序员必备的开发工具(electron)
网页版: life666.top:10001/
github: wtgroup/bao-json: JSON 工具, 支持注释