質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Q&A

解決済

1回答

2017閲覧

jqについての質問→深層のkeyの存在の有無で処理を分けたいです。

tiqua_nibio

総合スコア62

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

0グッド

0クリップ

投稿2020/12/02 10:14

このようなファイルがあります。これを、jqを使ってkey「h」が含まれるものと含まれないものに分割したいと思っています。
可能でしょうか?hasを使ってみたんですが、どうも最上位のkey(a,b,c,d)しか認識しないようです。

json.json

1[ 2 { 3 "a": 123, 4 "b": 456, 5 "c": 789, 6 "d": [ 7 { 8 "e": 123, 9 "f": 456, 10 "g": 789 11 } 12 ] 13 }, 14 { 15 "a": 123, 16 "b": 456, 17 "c": 789, 18 "d": { 19 "e": 123, 20 "f": 456, 21 "g": 789, 22 "h": 122 23 } 24 }, 25 { 26 "a": 123, 27 "b": 456, 28 "c": 789, 29 "d": { 30 "e": 123, 31 "f": 456, 32 "h": 122 33 } 34 } 35]

これを2つに分割して出力したいです。

json.json

1[ 2{ 3 "a": 123, 4 "b": 456, 5 "c": 789, 6 "d": [ 7 { 8 "e": 123, 9 "f": 456, 10 "g": 789 11 } 12 ] 13 } 14]

json.json

1[ 2 { 3 "a": 123, 4 "b": 456, 5 "c": 789, 6 "d": { 7 "e": 123, 8 "f": 456, 9 "g": 789, 10 "h": 122 11 } 12 }, 13 { 14 "a": 123, 15 "b": 456, 16 "c": 789, 17 "d": { 18 "e": 123, 19 "f": 456, 20 "h": 122 21 } 22 } 23]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2020/12/02 14:50

"d"の値が、配列だったりハッシュだったりと定まらないので、ここが統一されてないと難しいのでは?
guest

回答1

0

ベストアンサー

型をチェックして、カンマで繋げばいけそうです。

plain

1jq '(.[]|select((.d|type)=="array")|select(.d[]|.h)),(.[]|select((.d|type)=="object")|select(.d["h"]))'

投稿2020/12/02 15:26

otn

総合スコア84798

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2020/12/02 15:31

jqはあまり経験が無いので、一般的じゃない書き方かも知れません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問