英語フランス語スペイン語

Ad


OnWorksファビコン

jshon - クラウド上のオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで jshon を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド jshon です。

プログラム:

NAME


ジョン — シェル用の JSON パーサー

SYNOPSIS


ジョン -[P|S|Q|V|C|I|0] [-F パス] -[t|l|k|u|p|a] -[s|n] 値 -[e|i|d]索引

DESCRIPTION


ジョン JSON を解析、読み取り、作成します。 可能な限り使用できるように設計されています。
シェル内で、grep/sed/awk で作られた脆弱なアドホック パーサーを置き換えます。
Perl/Python で作られた重量級の XNUMX 行パーサー。

ジョン 標準入力から json テキストをロードし、アクションを実行して、最後のアクションを標準出力に表示します。
オプションの中には json を出力するものと、プレーンテキストの概要を出力するものがあります。 Bash には非常に優れた機能があるため、
ネストされたデータ構造が貧弱である、 ジョン 通常、JSON をネイティブ オブジェクトとして返しません。
図書館でしょう。 その代わり ジョン は編集履歴をスタックに保持し、ユーザーは
一番上のJSON要素。

ACTIONS


各アクションは短いオプションの形式をとります。 引数が必要なものもあります。 多くの例がある一方で、
of ジョン 相互にパイプすることができます。アクションを減らすために、アクションは連続的に連鎖する必要があります。
呼び出します。 すべての例では、次の JSON サンプルを使用します。

{"a":1,"b":[true,false,null,"str"],"c":{"d":4,"e":5}}
jshon [アクション] < サンプル.json

最も一般的な読み取り専用の使用には、いくつかの機能だけが必要です。 -e アクションとそのXNUMX -a 真ん中に
それら。

-t (型) は文字列、オブジェクト、配列、数値、ブール値、null を返します

jshon -t -> オブジェクト

-l (長さ) は整数を返します。 文字列、オブジェクト、配列に対してのみ機能します。

jshon -l -> 3

-k (keys) は、改行で区切られたキーのリストを返します。 オブジェクトに対してのみ機能します。

jshon -k -> abc

-e index
(抽出) 「index」のjson値を返します。 オブジェクト、配列に対してのみ機能します。 のインデックス
配列は整数です。

jshon -ec -> {"d":4,"e":5}

-a (across) は、選択した要素全体に残りのアクションをマップします。 オブジェクトに対してのみ機能します
そして配列。 多数 -a 呼び出しはネストできますが、実際にはその必要はほとんどありません。

jshon -eb -a -t -> bool bool null string

-s
(文字列) は、JSON エンコードされた文字列を返します。 後で既存のファイルに (-i) 挿入できます。
構造。

jshon -s "バック\\スラッシュ" -> "バック\\スラッシュ"

-n
(非文字列/数値) は json 要素を返します。 後で既存のファイルに (-i) 挿入できます。
構造。 有効な値は、「true」、「false」、「null」、「array」、「object」、整数、および
浮く。 略語 t、f、n、[]、{} もそれぞれ使用できます。

jshon -n オブジェクト -> {}

-u (unstring) デコードされた文字列を返します。 単純な型でのみ機能します: string、int、real、
ブール値、null。

jshon -eb -e 3 -u -> str

-p (pop) スタックから最後の操作をポップし、履歴を巻き戻します。 役に立つ
XNUMX つのオブジェクトから複数の値を抽出します。

jshon -ec -ed -u -p -ee -u -> 4 5

-d index
(削除) 配列またはオブジェクト内の項目を削除します。 負の配列インデックスはラップされます
まわり。

jshon -db -> {"a":1,"c":{"d":4,"e":5}}

-i index
(挿入) は複雑です。 抽出の逆です。 抽出すると json サブ要素が挿入されます
スタック上にあります。 Insert はスタックからサブ要素を削除し、その部分の JSON を挿入します。
その下の大きな配列/オブジェクトにコピーします。 extract を使用して json ツリーに飛び込みます。
delete/string/nonstring を使用して内容を変更し、insert を使用して変更をプッシュして戻します。
ツリー。

jshon -ea -ia -> 元の json
jshon -s one -ia -> {"a":"one", ...}

配列は特別な方法で処理されます。 整数を渡すと、値を挿入せずに値が挿入されます。
上書き。 文字列「append」と同様に、負の整数を使用できます。 上書きするには
配列内の値: インデックスを削除します。 -n/s 新しい値をインデックスに挿入します。

jshon -eb -d 0 -sq -i 0 -> {"b":"q",false,null,"str"}

非操作


json を直接編集しないメタオプションがいくつかあります。 これらを呼び出すのは XNUMX 回あたり最大 XNUMX 回です
呼び出し。

-F
(file) は標準入力ではなくファイルから読み取ります。 操作を行わない唯一のオプションは、
引数。

-P (jsonp) は、通常に続行する前に jsonp コールバックを削除します。

-S (sort) は、元の順序ではなくキーでソートされた json を返します。

-Q (静か) stderr でのエラー報告を無効にします。そのため、「2> /dev/null」を散布する必要はありません。
スクリプト全体を通して。

-V (値渡し) は、編集履歴スタックでの値渡しを有効にします。 極端な場合には、
何千もの深くネストされた値が発生する可能性があります ジョン 動作が数倍遅くなる
数倍のメモリを使用しながら。 ただし、値渡しは参照渡しより安全です。
一般に、驚きは少なくなります。 参照による参照はデフォルトで有効になっています。
読み取り専用操作中にリスクが発生するため、一般に json の編集がより便利になります。

jshon -ec -n 7 -id -p -> c["d"] == 7
jshon -V -ec -n 7 -id -p -> c["d"] == 5
jshon -V -ec -n 7 -id -ic -> c["d"] == 7

-V 、変更は単にスタックを介して手動で挿入し直す必要があります。
中間値をポップオフします。

-C (続行) 回復可能なエラーの場合。 たとえば、そうでない値を抽出すると、
exist は、中止する代わりに編集スタックに「null」を追加します。 動作は変更される可能性があります
未来。

-I (インプレース) ファイル編集。 ファイルを変更する必要があるため、-F でのみ機能します。 これは
json ファイルにわずかな変更を加えるためのものです。 使用すると通常の出力が抑制されます
そして編集スタックの一番下が書き出されます。

-0 (null 区切り文字) -u の区切り文字を改行から null に変更します。 このオプション
-u のみに影響します。これは、改行が正規に出現する可能性があるのは -u のみであるためです。
出力。

- バージョン
YYYYMMDD タイムスタンプを返して終了します。

その他 ツール


ジョン 常に XNUMX 行に XNUMX つのフィールドを出力します。 多くの Unix ツールは複数のタブで区切られることを想定しています
行ごとのフィールド。 これを修正するには、「paste」を介して出力をパイプします。 ただし、ペーストはできません
空行を処理するので、それらをプレースホルダーで埋めます。 以下に例を示します。

ジション ... | sed 's/^$/-/' | 貼り付け -s -d '\t\t\n'

これにより、空白が「-」に置き換えられ、XNUMX 行ごとに XNUMX 行にマージされます。

json 出力を生成するツールはますます増えています。 多くの場合、これらは行指向のメソッドを使用します。
json/平文のハイブリッド。各行は独立した json 構造です。 悲しいことにこれが意味するのは
出力全体が正規の JSON ではありません。 データを XNUMX 行ずつループします
(電話中 ジョン 行ごとに XNUMX 回)、または正規の JSON 配列に変換します。 例えば:

行を読み取っている間; do jshon <<< "$line"; 完了 < <(journalctl -o json)

ジャーナルctl -o json | sed -e '1i[' -e '$!s/$/,/' -e '$a]' | じしょん

ゴルフ


非常に短いワンライナーを気にする場合、そうでない場合でも議論が凝縮される可能性があります。
曖昧さを引き起こす。 からの例 -ポップ) 以下のようにゴルフをすることができます。

jshon -ec -ed -u -p -ee -u == jshon -ec -ed -upee -u

私はこれを行うことはお勧めしません(理解が非常に難しくなります)が、一部の人は
結果にもかかわらずゴルフ。

作成 JSONの


ジョン 空のオブジェクトを入力として渡すことで json を作成できます。

jshon -s one -ia <<< "{}"

作者


ジョン カイル・キーンによって書かれた[メール保護]> Dave Reisner のパッチ付き
<[メール保護]>、AndrewF (BSD、OSX、jsonp、ソート)、Jean-Marc A (solaris)。

onworks.net サービスを使用してオンラインで jshon を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad