如何修剪除大 JSON 文件引号内的空格以外的所有空格

iba*_*221 3 javascript linux json space

我目前正在处理一个大型 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"
}
Run Code Online (Sandbox Code Playgroud)

我希望它在删除不必要的空格、制表符、返回等后看起来像这样:

{"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"}
Run Code Online (Sandbox Code Playgroud)

基本上每个空格都应该被删除,除了引号内的空格。

Ste*_*202 5

您可以使用jq-c--compact-output选项:

jq -c '' < your-file.json
Run Code Online (Sandbox Code Playgroud)

演示:

$ echo '
> {
>   "a": "b"
> }' | jq -c ''
{"a":"b"}
Run Code Online (Sandbox Code Playgroud)


Pat*_*ick 2

您可以将 json 读入代码,然后将其输出到指定紧凑格式的文件,引号内的空格将保留在字符串中。

在 python 中,您可以使用本机 json 库

import json
json.loads(your filestream)
json.dumps(your output stream) // the native output of json.dumps is compact
Run Code Online (Sandbox Code Playgroud)

python 文档中的详细信息https://docs.python.org/2/library/json.html

但是您应该能够在任何处理 json 的语言中执行相同的技术。