❤️❤️❤️❤️❤️❤️ 我们已经正式推出微信小程序,在微信中搜索 TrendForge Pro 即可使用小程序,如果使用 Telegram 请搜索 trendforge_tg ❤️❤️❤️❤️❤️❤️

JSON 工具 API

JSON 处理接口。单端点支持四种动作:格式化、压缩、校验、JSONPath 取值,全部为后端纯字符串/对象计算,不依赖外部网络。


鉴权

所有接口均需在请求头中携带访问令牌:

Authorization: Bearer tf_xxxxxxxxxxxxxxxx

令牌在 用户设置 → 访问令牌 页面创建,创建时需勾选对应权限:

权限 说明
read:tools_json 调用 JSON 处理接口

频率限制

范围 上限
单用户 / 单分钟 60 次
单用户 / 单日 2000 次

超限返回 429


接口列表

1. 处理 JSON

POST /api/tools/json/process

所需权限:read:tools_json

通过 action 字段切换不同处理动作,未来扩展(如 diff / patch)不会新增路由。

请求体(JSON)

参数 类型 必填 说明
action string 取值:format / minify / validate / extract
input string 待处理的 JSON 字符串
options object 见下方各 action 子参数
options 字段
字段 类型 适用 action 说明
indent integer formatextract 缩进空格数,取值 24,默认 2
sortKeys boolean format 是否递归按 key 字典序排序,默认 false
path string extract JSONPath 表达式,必填于 extract
path 支持的 JSONPath 语法
语法 示例 含义
$ $ 根节点
.key $.user.name 对象字段访问
["key"] $["users"][0]["full name"] 对象字段(支持含特殊字符的 key)
[n] $.list[0], $.list[-1] 数组下标(负数表示从末尾计数)
[*] $.users[*].name 数组通配,匹配数组所有元素

不支持:filter (?(@.x>1)) / 递归 (..) / slice ([1:3])。如需完整 JSONPath 请在客户端自行处理。

返回值

format / minify
{
  "success": true,
  "data": {
    "output": "{\n  \"a\": 1\n}"
  }
}
字段 类型 说明
output string 处理后的 JSON 字符串
validate

合法时:

{
  "success": true,
  "data": {
    "valid": true,
    "error": null
  }
}

非法时:

{
  "success": true,
  "data": {
    "valid": false,
    "error": {
      "line": 3,
      "column": 12,
      "message": "Unexpected token '}' ..."
    }
  }
}
字段 类型 说明
valid boolean 是否为合法 JSON
error.line integer 出错行号,无法定位时为 null
error.column integer 出错列号
error.message string 原始 V8 解析错误信息
extract
{
  "success": true,
  "data": {
    "path": "$.users[*].name",
    "match_count": 2,
    "matches": ["alice", "bob"]
  }
}
字段 类型 说明
path string 回显请求中的 JSONPath
match_count integer 命中节点数
matches any[] 命中节点的值,按顺序排列;通配 [*] 时为多元素

示例

# 格式化(2 空格缩进,按 key 排序)
curl -X POST "https://trendforge.devlive.top/api/tools/json/process" \
  -H "Authorization: Bearer tf_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "format",
    "input": "{\"z\":1,\"a\":2}",
    "options": { "indent": 2, "sortKeys": true }
  }'

# 压缩
curl -X POST "https://trendforge.devlive.top/api/tools/json/process" \
  -H "Authorization: Bearer tf_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"action":"minify","input":"{\n  \"a\": 1\n}"}'

# 校验
curl -X POST "https://trendforge.devlive.top/api/tools/json/process" \
  -H "Authorization: Bearer tf_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"action":"validate","input":"{\"a\":1}"}'

# JSONPath 取值
curl -X POST "https://trendforge.devlive.top/api/tools/json/process" \
  -H "Authorization: Bearer tf_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "extract",
    "input": "{\"users\":[{\"name\":\"alice\"},{\"name\":\"bob\"}]}",
    "options": { "path": "$.users[*].name" }
  }'

错误响应

所有错误均返回 JSON 格式:

{
  "success": false,
  "code": 400,
  "message": "JSON 解析失败",
  "detail": {
    "line": 3,
    "column": 12,
    "message": "Unexpected token '}' ..."
  }
}

当错误与输入位置相关时(JSON 解析 / JSONPath 语法),detail 字段会带详细定位;其它错误 detailnull

HTTP 状态码 code 原因
400 400 action 不在四个枚举内 / input 不是合法 JSON / path 不合法
401 401 未携带令牌或令牌无效
403 403 令牌缺少 read:tools_json 权限
429 429 命中分钟级或日级频率限制
500 500 服务器内部错误

数据说明

  • 单次调用为内存计算,不持久化、不缓存、不上报第三方
  • validate 错误信息来自 V8 的 JSON.parse,行列号通过反查 position 计算得出
  • extractmatches 数组保留命中顺序,对应 JSONPath 在原 JSON 中的遍历顺序
  • 通配 [*] 应用到对象时会枚举所有值(按 Object.keys 顺序),应用到数组时枚举所有元素
  • 同一令牌的频率配额与同一登录会话共享
助手