如何修剪所有的空格,除了那些在大JSON文件的引号
How to trim all spaces except those within quotes for large JSON file
我目前正在处理一个大型JSON文件,并希望通过删除所有不在引号内的额外空格,制表符,返回等来缩短它。该文件大约有100,000行代码,我的其他脚本很难快速使用它。文件最初看起来像:
{
"path": "/math/",
"id": "math",
"title": "Math Title",
"icon_url": "/images/power-mode/badges/circles-40x40.png",
"contains": [
"Topic",
"Video",
"Exercise"
],
"children": [],
"parent_id": "root",
"ancestor_ids": [
"root"
],
"description": "null",
"kind": "Topic",
"h_position": -10,
"v_position": 6,
"slug": "math"
}
,我希望它在删除不必要的空格、制表符、返回符等后看起来像这样:
{"path":"/math/","id":"math","title":"Math Title","icon_url":"/images/power-mode/badges/circles-40x40.png",
"contains":["Topic","Video","Exercise"],"children":[],"parent_id":"root","ancestor_ids":["root"],
"description": "null","kind":"Topic","h_position":-10,"v_position":6,"slug":"math"}
基本上所有空格都应该删除,除了引号内的空格。
您可以使用jq的-c
或--compact-output
选项:
jq -c '' < your-file.json
演示:$ echo '
> {
> "a": "b"
> }' | jq -c ''
{"a":"b"}
您可以将json读取为代码,然后将其输出到文件中指定紧凑格式,引号中的空格将保留在字符串中。
在python中你可以使用本地的json库
import json
json.loads(your filestream)
json.dumps(your output stream) // the native output of json.dumps is compact
python文档中的详细信息https://docs.python.org/2/library/json.html
但是你应该能够在任何处理json的语言中使用同样的技术
为什么不直接通过perl管道呢?
perl -0pe 's#((^[^"]+")|("[^"]+$)|("[^"]+")|(^[^"]+$))#($x=$1)=~s/'s+/ /g;$x#ge'
- -0将字段分隔符设置为null,因此while(<>)将看到一个大行,并且您可以处理仅使用空白而不生成额外空格的多行。
- -p将while(<>)打印位。
- -e说这是我们要运行的perl代码。
代码基本匹配:
- 在行首和第一个引号之间
- 在最后一个引号和行尾之间。
- 在两个引号之间,由于最后两个匹配将只包含引号之外的文本。
- 或者没有引号的行。
然后用一个空格替换所有一组或多个空白字符。
基本上只替换引号之间的空格,稍加修改....
您可以在线使用JSON迷你器。在Google上搜索JSON minifier。谷歌
以下是JSON迷你器返回给我的内容:
{"path":"/math/","id":"math","title":"Math Title","icon_url":"/images/power-mode/badges/circles-40x40.png","contains":["Topic","Video","Exercise"],"children":[],"parent_id":"root","ancestor_ids":["root"],"description":"null","kind":"Topic","h_position":-10,"v_position":6,"slug":"math"}
你可以看到它没有删除引号之间的空格。例如"Math Title"
相关文章:
- jQuery匹配JSON对象的部分文本
- 在循环中分配json值时,值被覆盖
- 需要帮助设置json数组
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 使用JQuery解析JSON嵌套数组
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何使用json将对象列表从java转换为javascript
- 如何使用 node.js 比较两个 json 数组
- 如何将JSON数据导入我的ejs模板
- 区分JSON中的矩阵和列表列表
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 如何为json对象中的段发送array[]
- 根据id将json数组组合为一个json数组
- Json数据包含日期和时间格式
- AngularJS-在JSON选择器中使用变量名
- 如何修剪所有的空格,除了那些在大JSON文件的引号