1

コマンドラインから解析しようとしている巨大な JSON 文字列があります。

次に例を示します。

"Product_ID":"productID_1","Price":"$4.99","Cover_Image":"cover.jpg"},{"issue_id":"2","total_article":"36","issue_number":"4","issue_name":"","volume":"57","editors":"","date_of_release":"2013-04-01"

複数の問題がリストされていますが、すべて同じフィールドがあります。JSON の各記事から製品 ID、価格、およびリリース日を引き出し、コマンド ラインからテキスト ファイルに書き込む必要があります。

私は awk が行くべき道だと思っていましたが、それは一行でそれを読むので、私はそれが難しいと感じました.

これらのフィールドを引き出すための提案/コード例はありますか?

4

4 に答える 4

1

sql4json を確認してください ( http://github.com/bheni/sql4json )

既に述べたように、これは有効な json ではありません。内容を含む inputfile.json という名前のファイルがある場合:

[
   {"Product_ID":"productID_1","Price":"$1.99","Cover_Image":"cover1.jpg","issue_id":"4","total_article":"16","date_of_release":"2013-04-01"},
   {"Product_ID":"productID_2","Price":"$2.99","Cover_Image":"cover2.jpg","issue_id":"5","total_article":"26","date_of_release":"2013-04-02"},
   {"Product_ID":"productID_3","Price":"$3.99","Cover_Image":"cover3.jpg","issue_id":"6","total_article":"36","date_of_release":"2013-04-03"}
]

これにより、探しているものが得られるはずです。

sql4json --csv 'SELECT Price, Product_ID, date_of_release' <inputfile.json >outputfile.csv

outputfile.csv の内容は次のようになります。

$1.99,productID_1,2013-04-01
$2.99,productID_2,2013-04-02
$3.99,productID_3,2013-04-03
于 2013-12-17T06:55:32.787 に答える
0

ほとんどの場合、python は既にインストールされています。インストールされていない場合は、インストールしても問題ありません。

printjson.py

import json;
import sys;
for obj in json.loads(sys.stdin.readline()):
    print obj['Product_ID']
    print obj['Price']

利用方法

$ echo '[{"Product_ID":"productID_1","Price":"$4.99","Cover_Image":"cover.jpg"}]' | python printjson.py > outfile

$ cat outfile 
productID_1
$4.99
于 2013-03-28T16:32:25.360 に答える
0

原則として...自分で物事を解析したいという衝動に抵抗し、避けるようにしてください。あなたの正規表現は、サンプルの XML や JSON などで 1 回か 2 回動作する可能性がありますが、非常に危険です!

スクリプトなしで Python を使用して単一の値を取得する行を次に示します。

davanbri@om: echo $J
{"a":"fish"}
davanbri@om: python -c "import json;print json.loads('$J')['a']"
fish

あなたのニーズに合うかもしれません!または、実際の Python スクリプトを作成して、必要なすべての値を取得します。

于 2013-03-28T16:17:39.033 に答える
-1

jq と連携してうまく機能する素晴らしいツールがあります。多くの場合、巨大なファイルをフィルターにする必要があります。したがって、私のワークフローはhttps://github.com/ilyash/show-struct/で解析することです。これは、巨大な json を次のようなものに変換する小さなツールです。

.Records -- (Array of 3 elements) .Records[] .Records[].awsRegion -- us-east-1 .Records[].eventName -- DescribeInstances1 .Records[].eventSource -- ec2.amazonaws.com`

次に、jqを使用できます。たとえば。

aws ec2 記述-* | jq .Records[].eventName

JQには多くのオプションがあり、より多くのことを行うことができますが、これは私にとってはうまくいきます。

于 2016-06-21T20:36:03.847 に答える