Scheme で livedoor Reader を
読めるようになりました。
http://json.org/ にリンクがありますが、MzScheme 用 JSON ライブラリを使っています。
使い方は簡単で、json-read という関数に JSON データの入力ポートを渡すだけです。抜粋:
(define (api-post api post-data) (let ((in (post-pure-port (string->url (string-append "http://reader.livedoor.com" api)) (string->bytes/utf-8 (alist->form-urlencoded (cons (cons 'ApiKey (api-key)) (or (fix-data post-data) '())))) (list (cookie) "Content-Type: application/x-www-form-urlencoded")))) (dynamic-wind void (cut json-read in) (cut close-input-port in))))
配列はリストとして、オブジェクト( { } で囲まれた式)はベクタとして返ってきます。
色々応用は考えられるんですが、取り敢えずは、じっくり読むことを目的としていないフィードをさっと REPL に表示して既読にする、とか、あと podcast などメディア系のフィードを自動でローカルのプレイリストに追加できたら便利だなと思います。