こんにちは、jqを使用して間違ったjsonファイルからフィールドを抽出できますか?
{
'_id': ObjectId('58049da30b78a4a11e3c9869'),
'name': 'joe bam',
'username': 'joe_bam',
'contact_info': {
'email': 'N/[email protected]'
},
'color': 'Blue',
'updated_at': datetime.datetime(2017, 5, 18, 11, 16, 19, 737000),
'created_at': datetime.datetime(2016, 10, 17, 9, 45, 7, 226000),
'token': '$2y$10$VMgv1S/NiGzkPsGhc4S.6eGFvEXv5YenlWQNdqUbVy4aGaeKOyxpi',
'views': 29,
'status_logged': True,
'provider': 'signup'
}
この例では抽出したいと思います。jq -r '[.name, .username, |contact_info .email] | @csv'
それは可能ですか? ?このjsonを検証し、エラーが発生したため
ありがとうございます!
答え1
thanasispユーザーが言ったようにコメントから、ドキュメントはMongoDBクエリの出力である可能性が高く、データベースエンジンを使用してJSONに正しく変換することでより解決できます。
ただし、yq
ユーティリティは以下に由来します。https://kislyuk.github.io/yq/(ラップされたYAMLパーサーjq
)は、まるでYAMLであるかのように文書をそのまま解析できます。
$ yq -r '[.name, .username, .contact_info.email] | @csv' file
"joe bam","joe_bam","N/[email protected]"
私が「一種の」と言った理由は、IDフィルタを通過すると次の問題が発生するためです。
$ yq . file
{
"_id": "ObjectId('58049da30b78a4a11e3c9869')",
"name": "joe bam",
"username": "joe_bam",
"contact_info": {
"email": "N/[email protected]"
},
"color": "Blue",
"updated_at": "datetime.datetime(2017",
"5": null,
"18": null,
"11": null,
"16": null,
"19": null,
"737000)": null,
"created_at": "datetime.datetime(2016",
"10": null,
"17": null,
"9": null,
"45": null,
"7": null,
"226000)": null,
"token": "$2y$10$VMgv1S/NiGzkPsGhc4S.6eGFvEXv5YenlWQNdqUbVy4aGaeKOyxpi",
"views": 29,
"status_logged": true,
"provider": "signup"
}