投稿

ラベル(JSON)が付いた投稿を表示しています

Java API for JSON Processing,JSONBと比較してみた

ABNFパーサを作ったおまけでてきとーにRFCだけ見てなんとなく作ったJSON実装(SoftLibJSON)がどれくらいJava標準(Java API for JSON Processing と JSONB)に近いのかなと思い、比較してみた。 結果、一応元のRFCがあるのでほぼそっくりではあるのだけど、微妙に違うのでそのあたりの解説と、今後どうするのかとか。   Java API for JSON Processing SoftLibJSON   TEXTぱーす   どこか JSON.parse()                   JSON TEXT化   JSONValue.toString()    Object→JSON   JSONValue.valueOf()    JSON→Object   JSONValue.map()    値 JsonValue JSONValue         NULL JsonValue.NULL JSONNULL    true JsonValue.TRUE JSONBoolean    false JsonValue.FALSE JSONBoolean    数値 JsonNumber JSONNumber    配列 JsonArray JSONArray    構造体 JsonObject JSONObject   こうしてみると、JsonValue からの継承関係はだいたいおなじ。JsonArrayはList,JsonObjectはMapを継承するのに対して、SoftLibJSONではJSON Pointerに対応するための機能も埋め込んだため、JSONArrayとJSONObjectではJSONCollectionとしてまとめたものを継承しているのが違い。 値の取り出し方はJava APIの方が型変換の呪縛でいろいろ...

JSONとかいうもの

しばらく前からJSONとかRESTとかいうものがプログラムとか通信とかの間で使われるようになってきていたけど、全然追ってなかったのでいまさら追いかけた。 追いかけた足跡だけで細かいことは省略。 OpenIDを開いてみた気がする…。 JSONを広げる  避けていたのは認証とかそういうところにたどり着かなかったから。今なら簡単に見つかりそうな気もする。 とりあえず仕様を探せ。JSONはRFC 8259が最新で最終版ともいわれている。ECMAの方にもECMA-404 2nd Edition というのがあるのでそれまでにあった差異などが解消されているとか。 名と値を文字列で書いたオブジェクトっぽいのがJSONの書式で、配列のもある。それだけ。JavaScriptとの受け渡しで相性がいいらしい。 RESTから関連機能を探す  RESTは何だろうというと、HTTPやら何やらでJSONを通信する方法とでもいうか、HTMLの代わりにJSONが飛び交う。 どこで使われているのかというと、いろんなところで。XMLが流行ってたのは今は昔とでもいう勢いで。 各種サービス提供に使われているのはREST APIがほとんどらしいよ。と噂に聞いている。IoTの分野でも手軽にRESTで通信できるようになってる。人が間に入らないサービスはこういう方向でどんどん増えてもらいたい。  RESTを使うのをRESTfulとかいうらしいよ。 ここまでは知ってた範囲。それで認証とかどうなのよというところで思考が停止。PKI使うのかBASIC認証使うのか、いろいろもやもやしてた数年前かな。 認証に使うのはRFC 2617 BASIC認証? とかCookieとかいろいろあった時代もあるようで。 RFC 7515-7519 というのがようやく安定してきた認証方法なのかな。この中からまずは JSON Web Token (JWT)を知ってみよう。PKIの基礎知識が必要。OAuth やOpenID Connect とやらもあるのであわせて後で調べる。 ABNFとJSON作ってみた Javaで使うにはライブラリもあるのだろうけど、たまたま作りかけていたABNF(RFC 5234)で作ってみようと思ったらJSONの読み書きは簡単にできてしまったのでそういうことにしておく。 ...