支持注释的JSON解析工具: bao-json (js)

969 阅读2分钟

原文:《支持注释的JSON解析工具: bao-json (js)》

  • JavaScript 编写.
  • 支持注释.
  • 参考 alibaba FastJson 工具库(Java), 纯手撸.

为什么'我'值得你关注?

  1. 我是有灵魂的: 支持注释解析. 目前为止, 我还没有找到一款支持注释的JSON解析工具 (工具库或界面工具). JSON格式化的工具倒是一抓一大把, 然而, 作为码农, json文本在构思和交流中很方便, 后续经常需要将 json 转 javabean 或其他语言的结构体, 重要的是, 不想丢失 json 中的'注释'. json 文本中的注释内容直接转成了 Javadoc 不香吗!
  2. 如果你对 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/


npm: bao-json - npm

github: wtgroup/bao-json: JSON 工具, 支持注释

Nisus-Liu/bao-tool: 程序员必备的开发工具(electron)

alibaba/fastjson: A fast JSON parser/generator for Java.