dictknifegithub.comはじめにjson,yamlを扱う上で便利そうな機能を含んだ十得ナイフっぽい感じのライブラリを作っていた。それにコマンドをもたせた結果便利になってきたのでどういうときに何を使うかを整理しておく(完全に自分用のメモ)。dictknifedictknifeとjsonknifeという2つのコマンドを用意している。jsonknifeはjsonschemaやswaggerというかJSON関連の諸々に関連した機能を持っている。dictknifeはもう少しprimitiveなもの。dict特に機能を網羅して紹介や説明をするという気も起きないし。意味が無い気がするのでどういうふうに使うかだけ書く。concatconcatはその名前の通りに何かと何かを結合させるためのものではある。20}ふつうのconcatと異なるのはネストした表現にも対応しているところ。'#/definitions/person'フォーマットを変換したい場合にconcatという名前の通り元々のファイルをつなげる事が目的のコマンドだった。言え1つのものに対してフォーマットを変えたい場合にも使う。拡張子を付けても良いし。–output-formatで出力するformatを変えても良い。20対応している拡張子は今のところ.yaml(.yml),.json.toml。diffdiffはその名の通りdiff。ソートした結果に対してdiffを調べてくれるので順序の処理が甘い感じのコマンドの出力結果を調べるのに便利。person{0,1}.yamlもちろんふつうのdiffでは差分が存在する。foodeserializeされた後のsictに対するdiffを見るので順序には依存していない。出力結果がJSONになっているのがちょっと不便といえば不便かもしれない。}あと、昔の実装では単にjson.dumps時にsort_keysをTrueにすれば良いだろうとだけ思っていたのだけれど。yaml上の表現としてkeyに数値が許されるのだけれど。JSON上はkeyは文字列と規程されている。そのため以下の様なデータを渡したとき失敗していた。オプションを付けてあげるとkeyを文字列に変換してから比較してくれるので問題がなくなる。transformはその名の通り変換。hmm上の例では特に意味のない変換だったけれど。derefとの組み合わせで使う事があった(今ではunwrap,wrapのペアやrefの指定方法の進化で不要になった)。これが必要になったらある意味負け。loadとdumpを繰り返すような変換処理があった場合にこれ経由で呼びだすと便利みたいなことはある。昨日作ったコマンドに変更を加えた。...2017-06-10arrayを含んだ順序が不揃いなJSONのdiffarrayを含んだ順序が不揃いなJSONのdiffを取るのはだるい。componentという機能を追加した月別アーカイブはてなブログをはじめよう!podhmoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。