json 格式化工具_Vim json完美体验:轻松阅读万行json

最近和同事对接的过程中,同事发过来了一个json,这个json足足有1M~2M这么大,使用vim打开了之后,看着密密麻麻的花括号,方括号,着实有点抓狂。

好在有Vim神器在手,万行json也能轻松阅读。

Step 1. 格式化

json的格式化工具还是非常多的,看了下Neoformat插件里的配置,足足有5种可选的工具:

function! neoformat#formatters#json#enabled() abort
    return ['jsbeautify', 'prettydiff', 'prettier', 'jq', 'fixjson']
endfunction

可是当我使用Neoformat命令时,得到的却是:

Neoformat: no change necessary

好吧,默认的配置居然不管用。只能自己动手配置了。

let g:neoformat_json_python = {
       'exe': "python",
       'args': ['-m', 'json.tool']
       }
let g:neoformat_enabled_json = ['python']

这里直接使用python提供的格式化工具。如果使用了SpaceVim的话,启用format layer之后,那么使用[SPC]bf 快捷键,就可以格式化了。格式化之后,果然赏心悦目了不少。但是由于json的行数实在太多,想要找到想要的数据还是不太容易。

[Update: 对中文的支持] 今天发现如果原始的json中包含中文的话,格式化之后中文会以u开头的字符显示。深挖之后,发现是因为python -m json.tool中没有处理unicode字符,全部使用str来输出。这个还是挺违反直觉的,毕竟python3的一大变更就是将unicode和str区分开来,标准库中json模块居然没有跟进。解决这个问题也很简单,既然python不支持,那就换成json_pp来处理就好了。json_pp在各大发行版似乎都默认安装了,添加一下配置即可:

let g:neoformat_json_jsonpp = {
       'exe': "json_pp",
       'args': ['-json_opt', 'utf8,pretty'],
       'stdin': 1
       }
let g:neoformat_enabled_json = ['jsonpp']

Step 2. 折叠

格式化之后的json是有很好的缩进和层级的,因此使用vim默认的折叠功能,就能把不重要的信息折叠起来了。先来介绍下常用的折叠快捷键:

  • zM: 折叠所有层级
  • zc: 折叠当前行所在的内容
  • zO: 打开当前折叠的所有层级
  • zo:打开当前折叠

首先,设置折叠方式为indent。

set foldmethod=indent

然后只要简单地使用zM折叠所有层级,然后用zo一层一层打开,就可以很清晰地浏览json的结构了。

9ce09e510fd7b45386cde6bc9068db74.png

其他注意事项

json虽然灵活方便,但是过多使用也是会带来很多问题的。因为太灵活,所以可能就有非常多的代码来处理边界输入,以及做错误处理。另外,在机器学习领域,json不适合作为数据集的格式,因为数据量大的时候,需要完全load进来,才能解析,这样很浪费资源,而且不太容易并行处理。可读性也是一个问题,想要查看数据集中的某些样本的时候会不太直观。如果非要使用的话,可以把每个样本作为一个json,每行放一个样本,在json比较小的时候,也是可以的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Last login: Fri Jul 14 16:46:34 on ttys000 jeongyiii@Jeongyiii-2 ~ % cd Downloads jeongyiii@Jeongyiii-2 Downloads % python3 json2xml.py Traceback (most recent call last): File "json2xml.py", line 56, in <module> process_json_file(file_path) File "json2xml.py", line 50, in process_json_file dataframe_to_excel(expanded_df, excel_file_path) File "json2xml.py", line 32, in dataframe_to_excel writer.save() AttributeError: 'OpenpyxlWriter' object has no attribute 'save' jeongyiii@Jeongyiii-2 Downloads % vim json2xml.py jeongyiii@Jeongyiii-2 Downloads % python3 json2xml.py Excel file generated: example.xlsx jeongyiii@Jeongyiii-2 Downloads % python3 json2xml.py Excel file generated: example.xlsx jeongyiii@Jeongyiii-2 Downloads % python3 json2xml.py Excel file generated: example.xlsx jeongyiii@Jeongyiii-2 Downloads % vim json2xml.py jeongyiii@Jeongyiii-2 Downloads % python3 json2xml.py Excel file generated: example.xlsx jeongyiii@Jeongyiii-2 Downloads % python3 json2xml.py Excel file generated: example.xlsx jeongyiii@Jeongyiii-2 Downloads % vim json2xml.py jeongyiii@Jeongyiii-2 Downloads % vim json2xml.py def process_json_file(file_path): # Read JSON file json_data = read_json_file(file_path) # Parse JSON object json_obj = json.loads(json_data) # Convert JSON data to DataFrame df = json_to_dataframe(json_obj) # Expand the 'template' column expanded_df = expand_template_column(df) # Write to Excel file excel_file_path = file_path.replace('.json', '.xlsx') dataframe_to_excel(expanded_df, excel_file_path) print("Excel file generated:", excel_file_path) # Usage example file_path = 'example.json' process_json_file(file_path) 说明
07-15

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值