JSONをBSONにCLIで変換する方法
はじめに
MongoDBで使用されるデータ構造にBSONがある. 研究の過程でJSON形式のデータをBSON形式のデータへ変換する必要があった. CLIで変換できるツールを探したところ,以下のツールが見つかった.
環境
$ python -V
Python 3.10.8
$ uname -a
Darwin xxx.local 22.3.0 Darwin Kernel Version 22.3.0: Thu Jan 5 20:49:43 PST 2023; root:xnu-8792.81.2~2/RELEASE_ARM64_T8103 arm64
手順
pipを使いjson2bsonをインストールする.
pip install json2bson
パスが通って実行できるか確かめる.
$ json2bson --help
Usage: json2bson [OPTIONS] INPUT_FILE OUTPUT_FILE
CLI to evaluate maintainability.
Options:
--help Show this message and exit.
実際にJSON形式からBSON形式にデータを変換する.
入力データは以下の形式である.
{
"foo": 10,
"bar": "BAR"
}
以下のコマンドを実行する.このコマンドではinput.jsonの中身をBSON形式に変換し,output.bsonに保存する
$ json2bson input.json output.bson
Successfully converted input.json to BSON: output.bson.
実際にバイナリ形式に変換されたことがわかる.
$ file output.bson
output.bson: data
$ hexdump -C output.bson
00000000 1b 00 00 00 10 66 6f 6f 00 0a 00 00 00 02 62 61 |.....foo......ba|
00000010 72 00 04 00 00 00 42 41 52 00 00 |r.....BAR..|
0000001b
JSON形式に戻してみる.CLIで使えるツールには MongoDB の提供する bsondump コマンドがある. ここでは,bsontoolsを使いJSON形式に戻してみる.
bsontoolsのリポジトリはソースコードのみ提供されている.ビルド済みのバイナリが別で公開されているため,以下からダウンロードして使う.
dwight/binaries: prebuilt binaries from peer projects here, and other downloadables
以下は output.bson をJSON形式に変換するコマンドである.
$ ./bson print < output.bson
{ foo: 10, bar: "BAR" }