#:g1: ケーススタイルの変換にリーダーマクロを使う

Posted 2021-04-17 11:20:40 GMT

仕事でjsonデータを扱うのですが、データ形式自体が開発中のため、開発者によってキー名のケーススタイルがぶれるという事態が発生しました。
それはとりあえず統一すれば良いのですが、データのぶれにより既存のアプリがデータを上手く扱えなくなってしまったので、当座でアプリを機能させるためには、キー名を正規化する必要があります。
しかし、既存のコードのキー名の正規化がまためんどくさいので、リテラル表記の部分はリーダーマクロを使って正規化してみることにしました。

(ql:quickload 'kebab)

(set-dispatch-macro-character #\# #\^ (lambda (srm chr arg) (declare (ignore chr arg)) (kebab:to-camel-case (read srm T nil T))))

(st-json:getjso #^"foo_bar_baz" (st-json:jso "fooBarBaz" 42)) → 42 t

まあ、急場しのぎですが、こういう時はリーダーマクロが便利ですね。


HTML generated by 3bmd in LispWorks 7.0.0

comments powered by Disqus