json

goでrequired/unrequiredに対応しつつpointerを使わないunmarshalJSONのエラーメッセージについて

昔以下の様な記事を書いていた。 goでJSONのunmarshal時のrequiredなfieldの扱いについて リンク先の記事ではpointerを使わないstruct定義に対してUnmarshalJSONを自前で定義することでどうにかやろうという感じのものだった。ただしこのリンク先の記事の実…

ネストした辞書(JSON)のマージについて考えるときに気にするのはリスト(Array)に対する操作かもしれない

github.com JSONのマージ dictknifeにはcatというサブコマンドがあり、これに複数のファイルを指定すると良い感じにマージしてくれる。 例えば以下のような2つのjsonをマージしてみる(mkdictはjoのようなコマンドラインでJSONをつくるための便利コマンド。フ…

JSONの$refを見て1つのファイルにまとめるコマンドを部分的に使えるようにした。

github.com JSONの$refを見て1つのファイルにまとめるコマンドを部分的に使えるようにした。OpenAPI documentなどを書くときに使う。 いままでは全部をまとめた形でしか使えなかった。 # いままで $ jsonknife bundle --src main.yaml $ jsonknife bundle -…

設定ファイル(JSON)のdiffをjson patchでやってみようという試み

設定ファイル(JSON)のdiffを手軽に分かるようになるには?ということについての探訪の1つ。文字列的なdiffの場合に意図しない余分なdiffが発生したりしていた(sort keysしてpretty printしたJSONを使えば幾文かはマシになるけれど)。それ以外の表現は無いも…

datacalssesのインスタンスを含んだ値をJSONにするときのメモ

いつものやつです。対応していない値をjson.dumps()に与えるとTypeErrorが発生するやつです。 TypeError 例えばこういうdataclassを定義して。 from dataclasses import dataclass, asdict @dataclass class Point: x: int y: int json.dumpsするとTypeError…

strangejsonで生成されるUnmarshalJSONのコードを短くした

github.com 生成されるUnmarshalJSONのコードを短くした。具体的にやったことはnewtype的に定義したstructのunmarsalをcastで済ませるようにした。 生成されるUnmarshalJSON 例えば以下のようなstruct定義で生成されるUnmarshalJSONは以下のようなもの。 // …

strangejson最近の進捗はJSONのunmarshal部分の生成ができるようになったこと

github.com まだ開発中で完成はしていないですが。strangejsonは最近の進捗によりJSONのunmarshal部分の生成ができるようになりました。 これはどういうことかと言うと以下のコードから。 github.com/podhmo/strangejson/examples/pointer02/person.go packa…

遊びでstrangejsonというgoのstructの定義とswagger定義(のようなもの)を行ったり来たりするようなものを作り始めた

github.com strangejsonというgoのstructの定義とswagger定義(のようなもの)との間を行ったり来たりするようなものを作り始めた。まだ完成はしていない。 何をするもの? 何をするものかと言うと goのstructの定義を見てswagger形式のschema定義(まだ確定は…

goでJSONのunmarshal時のrequiredなfieldの扱いについて

TL;DR goであんまりfieldにpointerを使いたくない required,unrequiredを表現するときにはpointerを使わざる負えない? unmarshal時に自分でチェックすればやれないこともない はじめに goのJSONへの対応について悩まされる事が多い。色々試行錯誤を繰り返し…

emacsでjqをJSONファイルのformatterとして使う

emacsでjqをJSONファイルのformatterとして使う。方法は2つ。 shell-command-on-regionを使う formatter専用の関数を作る shell-command-on-regionを使う M-|にshell-command-on-regionという関数がbindされている。これに引数を与えてあげると、現在選択さ…

singledispatchとjson.dumpが相性良いかも?

jsonのencodeエラーについては昔に書いたこの辺を見てもらうとして。 pythonでjson出力する際で対応していない型(e.g. datetime)の値を変換しながら出力したい - Qiita 今回の主題は、json.dumpsに渡すdefaultの関数としてfunctools.singledispatchが有用か…

arrayを含んだ順序が不揃いなJSONのdiff

arrayを含んだ順序が不揃いなJSONのdiffを取るのはだるい。だるい。 arrayを含んだJSON arrayを含んだJSONというのはこういうやつです。 people0.json [ { "name": "foo", "age": 10 }, { "name": "bar", "age": 20 } ] people2.json [ { "name": "bar", "ag…

jsonを直接引数としてコマンドラインから渡す方法を考えてた

はじめに awscliはbotocoreにコマンドラインインターフェイスを持たせるためのラッパーでしかないと考えると色々捗る気がした。 つまり基本的にはJSONを入力として取るAPIが存在してそれにより何でも操作する。 ただし、直接APIを呼ぶコードを書くのは面倒く…

jsonの順序を保ったままOrderedDictを作る

jsonの順序を保ったままOrderedDictを作る方法はobject_pairs_hookにOrderedDictを指定してあげれば良い import json from collections import OrderedDict from functools import partial loads = partial(json.loads, object_pairs_hook) data = ''' { "x"…