1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JSON ファイルの加工

1
Last updated at Posted at 2026-08-24

導入

JSON を使う機会は多いと思います。特に REST API では JSON を渡すことが多いですが、コンピュータが扱う JSON は改行が適宜入っておらず、人間が読みやすい形になっていません。しかも仕事で扱う JSON にはいろいろなデータが含まれており、とても長くて複雑です。かつカッコの対応も非常にわかりにくくなります。これを人間がそのまま読むのは至難の業です。

まさかとは思いますが「手動で改行をひたすら入れる」とかやってる人はいませんよね?
エンジニアなんですから、そんなことやってたらダメです。

jq

そこで jq というツールを使うのですが、こいつを Emacs から使う方法を示します。
まず jq をインストールして普通にターミナルで使える状態にしておいてください。

Emacs から jq を使う

(defun jq-format (beg end)
  (interactive "r")
  (shell-command-on-region beg end "jq ." nil t))

(defun jq-compact (beg end)
  (interactive "r")
  (shell-command-on-region beg end "jq -c ." nil t))

こんなのを init.el に書けば設定は終わりです。簡単!

使い方

Emacs で整形したい JSON をリージョン選択し、

M-x jq-format

とすると、人間が読みやすい形に改行とインデント(字下げ)を適宜入れてくれます。

M-x jq-compact

とすると、改行とインデントをすべて取り払って一行にしてくれます。修正した JSON を再度テストしたい場合に便利かも知れません。

というのは、curl コマンドは整形済みの適宜改行が入っている JSON も扱えますから、わざわざ改行がないフォーマットに戻す必要はないのです。人間が読みやすい形の JSON をそのまま扱うように、テスト運用環境の移行を提案するほうが良いかも知れません。

サンプル

web システムが吐き出す JSON の例です。
人間の読みやすさなんてヤツは何も考えてません(笑)

{"name":"山田太郎","age":28,"isStudent":false,"skills":["JavaScript","HTML","CSS"],"address":{"city":"大阪市","area":"北区"}}

こんな JSON を解析しなければならないとき、このままでは読み辛くて仕方ありません。
萎えますね。

{
  "name": "山田太郎",
  "age": 28,
  "isStudent": false,
  "skills": [
    "JavaScript",
    "HTML",
    "CSS"
  ],
  "address": {
    "city": "大阪市",
    "area": "北区"
  }
}

先ほど示した方法ならば、このように読みやすい形に一瞬で整形できます。
これなら解析も楽です。

蛇足

JSON に BOM が入り込むと大変な目に遭います。Emacs などのまともなエディタの使用を強く推奨します。

おわりに

今回は Emacs から jq を使って JSON を素早く整形する方法を解説しました。
作業を工夫することは、省力化だけでなく作業ミス防止にも役立ちます。

よいエンジニアライフを!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?