RabbitJson帮助与参考
← JSON 转文本工具
快速入门

JSON 路径与模板表达式指南

学习如何从 JSON 中提取数组,并将每一项转换为指定格式的文本。参考下面的示例,然后在 RabbitJson 中尝试。

1

提取数组

粘贴 JSON 并输入 data.books 等路径。选中的数据会显示在「提取的数组」中。如果 JSON 本身就是数组,使用 $。

2

转换为文本

编写 ${name} 等模板。检查「转换结果」,然后点击「复制」。要尝试示例数据,请在工作区点击「加载示例」。

转换模式

实时

编辑时自动更新数组和文本。

手动

先点击「提取数组」,再输入模板并点击「转换文本」。没有模板也能提取数组。

输入发生变化时

修改模板会保留已提取的数组。在手动模式下,修改 JSON 或路径后需要重新提取。旧结果会被清除,避免复制过期内容。

处理大型 JSON

大型输入会以纯文本显示并隐藏行号,仍处理全部数据。输出最多预览 200 行或 12,000 个字符,可能在某一项中间截断。复制或下载包含完整结果。

草稿保存在当前标签页中。如果保存失败,请保持页面打开或先另存输入再刷新。浏览器存储可用时,切换语言会保留草稿。

通过路径表达式提取 JSON 数组

字段使用点号,索引使用方括号,例如 data.books 或 items[0].tags。包含点号或空格的键需要带引号的方括号,例如 data["book.list"]。根数组使用 $。最终选中的值必须是数组。

仅推荐返回数组的路径。用上下箭头选择,Tab 或 Enter 插入,Esc 关闭。

示例 1

顶层属性

选择顶层数组。

JSON 输入

{
  "books": [
    {
      "name": "Book A",
      "price": 10
    },
    {
      "name": "Book B",
      "price": 20
    }
  ]
}

路径表达式

books

提取的数组

[
  {
    "name": "Book A",
    "price": 10
  },
  {
    "name": "Book B",
    "price": 20
  }
]
示例 2

嵌套路径

使用点号访问对象内部。

JSON 输入

{
  "data": {
    "books": [
      {
        "name": "Book A",
        "price": 10
      },
      {
        "name": "Book B",
        "price": 20
      }
    ]
  }
}

路径表达式

data.books

提取的数组

[
  {
    "name": "Book A",
    "price": 10
  },
  {
    "name": "Book B",
    "price": 20
  }
]
示例 3

数组索引

索引从 0 开始。

JSON 输入

{
  "items": [
    {
      "id": 1,
      "tags": [
        "a",
        "b"
      ]
    },
    {
      "id": 2,
      "tags": [
        "c",
        "d"
      ]
    }
  ]
}

路径表达式

items[0].tags

提取的数组

[
  "a",
  "b"
]

使用模板将 JSON 数组项转换为文本

用 ${…} 包裹字段或表达式。在大括号内输入以查看字段建议。

${…} 外的内容保留为普通文本。每一项的结果以换行符连接。字段建议支持嵌套字段,并显示字段在各项中的存在情况。

在模板表达式内,用上下箭头选择字段,Tab 或 Enter 插入,Esc 关闭。

当前项和索引

${$item} 表示当前元素;${$index} 从 0 开始,${$index + 1} 可从 1 编号。字段支持 ${name} 和 ${$item.name}。同名保留键使用 ${$item["$item"]} 或 ${$item["$index"]} 访问。使用 ${JSON.stringify($item)} 将整个对象输出为 JSON。

示例 1

JSON 数组转 Markdown 列表

此数组位于根层级,将路径表达式设为 $。应用模板为每一项生成一个 Markdown 列表项,然后复制结果。

提取的数组

[
  {
    "name": "Alice"
  },
  {
    "name": "Bob"
  }
]

文本模板

- ${name}

转换结果

- Alice
- Bob
示例 2

字符串数组

使用 $item 获取当前字符串,使用 $index + 1 编号。

提取的数组

[
  "admin",
  "editor"
]

文本模板

${$index + 1}. Role: ${$item}

转换结果

1. Role: admin
2. Role: editor
示例 3

数字数组

直接使用当前数字参与计算。

提取的数组

[
  10,
  20,
  30
]

文本模板

${$item} × 2 = ${$item * 2}

转换结果

10 × 2 = 20
20 × 2 = 40
30 × 2 = 60
示例 4

对象数组

通过 $item 或字段简写访问对象字段。

提取的数组

[
  {
    "name": "Alice"
  },
  {
    "name": "Bob"
  }
]

文本模板

${$index + 1}. ${$item.name} / ${name}

转换结果

1. Alice / Alice
2. Bob / Bob
示例 5

变量替换

插入每个数组项中的字段。

提取的数组

[
  {
    "name": "Book A",
    "author": "Author 1"
  },
  {
    "name": "Book B",
    "author": "Author 2"
  }
]

文本模板

Book: ${name} by ${author}

转换结果

Book: Book A by Author 1
Book: Book B by Author 2
示例 6

数学运算

在表达式内计算数值。

提取的数组

[
  {
    "name": "Product A",
    "price": 100
  },
  {
    "name": "Product B",
    "price": 200
  }
]

文本模板

${name}: $${price} (with tax: $${(price * 1.1).toFixed(2)})

转换结果

Product A: $100 (with tax: $110.00)
Product B: $200 (with tax: $220.00)
示例 7

组合表达式

组合字段、计算和普通文本。

提取的数组

[
  {
    "item": "Item A",
    "price": 100,
    "qty": 2
  },
  {
    "item": "Item B",
    "price": 50,
    "qty": 3
  }
]

文本模板

${item}: ${qty} x $${price} = $${price * qty}

转换结果

Item A: 2 x $100 = $200
Item B: 3 x $50 = $150
检查字段名和数字格式

蓝色表示内置变量和匹配的字段,紫色表示模板分隔符,橙色表示运算符,青色表示数字。红色波浪线表示缺失字段。使用 toFixed(2) 保留两位小数。