利用Sublime Text提取JSON数据中的特定键值

P粉328763957

P粉328763957

2026-07-22

643人浏览

原创

sublime text 的 json 语法高亮在数据不规范时会失效,需手动切换为 javascript 语法;正则提取应处理转义与换行;多键提取推荐多光标或 python 脚本;jsonpath 插件支持有限,复杂查询宜用浏览器控制台;注意 bom 和不可见字符导致的解析错误。

利用sublime text提取json数据中的特定键值

JSON数据结构不规范时,sublime_text自带的JSON语法高亮会失效

Sublime Text 默认对 .json 文件启用 JSON 语法高亮和验证,但一旦文件里混入注释、尾随逗号、单引号字符串或换行符未转义(比如原始日志中直接输出的多行 JSON),它就会放弃解析,导致无法折叠、无法跳转、也难以用正则精准定位键名。这时候别急着换工具,先在右下角点击语法标识,手动切换为 Plain TextJavaScript —— 后者对宽松 JSON 兼容性更好,能保留基础高亮,且不影响后续查找。

用正则提取 "key": "value" 类型值时,必须处理嵌套引号和转义

直接搜 "name": "(.*?)" 看似简单,但遇到 "desc": "He said "Hello"" 就会截断;更麻烦的是键值本身含换行(如 "content": "line1 line2")时,普通 . 不匹配换行,结果为空。正确做法是:

  • 启用正则模式(Ctrl+R → 勾选 .* 按钮)
  • "name"s*:s*"((?:[^"\\]|\\.)*?)".* 匹配带转义的双引号字符串(\\. 表示匹配任意被反斜杠转义的字符)
  • 若需跨行匹配,改用 "content"s*:s*"((?:[^"\\]|\\.|\n)*?)",显式加入 \n
  • 提取后可配合 Ctrl+Shift+PConvert Case to Lowercase 统一格式

批量提取多个键且保持顺序时,别依赖单次查找替换

想同时取 "id""status""created_at" 三个字段?逐个查容易漏或多选错行。推荐分两步:

php版微信js-sdk支付接口类
php版微信js-sdk支付接口类

php版微信js-sdk支付接口类

下载
  • 先用多光标:按住 Ctrl(Windows/Linux)或 Cmd(macOS),鼠标点击每个目标键名(如所有 "id"),再按 Right Arrow 跳到冒号后,Ctrl+Shift+→ 扩展到对应值末尾引号,最后 Ctrl+C
  • 若数据量大,写个临时 Python 脚本更稳:把当前 Sublime 内容复制进脚本,用 json.loads() 解析(提前用 re.sub(r'//.*', '', text) 清注释),再用字典推导取值
  • 注意:Sublime 的列选择(Alt+鼠标拖拽)对齐提取很实用,但只适用于键名左对齐、冒号位置一致的规整数据

JSONPath 插件在 Sublime 中实际支持有限

虽然社区有 JSONPath 插件(如 Sublime-JSONPath),但它依赖 Python 的 jsonpath-ng 库,而 Sublime 的 Python 环境默认不含该库,手动安装易出错;且插件只支持简单路径如 $.items[0].name,对过滤表达式(如 $[?(@.age > 18)])基本不响应。真要跑复杂查询,不如把内容复制到浏览器控制台,粘贴 JSON.parse(...) 后用原生 JS 查询,效率更高也更可控。

真正容易被忽略的是原始 JSON 是否含 BOM 或不可见控制字符——它们会让 json.loads()UnicodeDecodeErrorExpecting property name enclosed in double quotes。用 Sublime 的 View → Show Console 输入 view.encoding() 确认编码,再用 Ctrl+Shift+PSet Encoding to UTF-8 强制重载,比反复调正则更省时间。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

1832

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

889

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1153

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

7885

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

638

4

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.04

1212

5

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.14

1056

5

js截取字符串的方法介绍
js截取字符串的方法介绍

JavaScript字符串截取方法,包括substring、slice、substr、charAt和split方法。这些方法可以根据具体需求,灵活地截取字符串的不同部分。在实际开发中,根据具体情况选择合适的方法进行字符串截取,能够提高代码的效率和可读性 。

2023.09.21

1929

3

js生成随机数方法
js生成随机数方法

JavaScript生成随机数的方法,包括使用Math.random()方法生成指定范围内的随机整数、生成随机字符串和生成随机颜色。根据具体需求,可以选择适合的方法来生成随机数,以实现各种功能 。

2023.09.25

940

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程