json-syck - syck を利用したそこそこ速い JSON パーサ

1 NAME

json-syck - syck を利用したそこそこ速い JSON パーサ

2 SYNOPSIS

(require "json-syck")
(use-package :json-syck)

(json-load
 "{\"title\":\"\\u306f\\u3066\\u306a\\u30b9\\u30bf\\u30fc\\u65e5\\u8a18\",
   \"uri\":\"http://d.hatena.ne.jp/hatenastar/\",
   \"star_count\":\"75630\"}")
;;=> (("title" . "はてなスター日記") 
;;    ("uri" . "http://d.hatena.ne.jp/hatenastar/")
;;    ("star_count" . 75630))

3 DESCRIPTION

json-syck は syck を利用した JSON パーサです。

アプリケーションは以下のコードを追加することで json-syck を利用することができます。

(in-package :you-application-package)
(require "json-syck")
(use-package :json-syck)

4 INSTALL

4.1 NetInstaller でインストール

  1. NetInstaller で yaml-syck と json-syck をインストールします。

4.2 NetInstaller を使わずにインストール

  1. 以下のアーカイブをダウンロードします。
  2. アーカイブを展開して、$XYZZY 配下にファイルをコピーします。

5 MODULE

5.1 DEPENDS

json-syck は以下のモジュールに依存しています。

5.2 PACKAGE

json-syck は以下のパッケージを利用しています。

nickname はありません。

5.3 EXPORT

json-syck は以下のシンボルを export しています。

5.4 CONDITION

json-syck で定義している例外の継承関係は以下のとおりです。

json-simple-error
json-syck 関連のすべて例外の親コンディション。
json-parse-error
JSON のパースエラーが発生した時に通知される例外。

5.5 VARIABLE

なし。

5.6 COMMAND

なし。

5.7 FUNCTION

json-load

call-seq:

(json-load str [options...])  =>  S expression

JSON テキストを読み込み S 式に変換します。

以下のオプションを指定可能です。

null

JSON の null に対応する lisp の値を指定します。

デフォルト値は nil です。

(json-load "name: null" :null :json-null)
;; => (("name" . :json-null))
true

JSON の true に対応する lisp の値を指定します。

デフォルト値は t です。

(json-load "xyzzy: true" :true :json-true)
;; => (("xyzzy" . :json-true))
false

JSON の false に対応する lisp の値を指定します。

デフォルト値は nil です。

(json-load "xyzzy: false" :false :json-false)
;; => (("xyzzy" . :json-false))
seq

JSON の Arrays のマッピング方法を指定します。

  • 引数は :sexp または :array を指定します。
  • :sexp を指定した場合はリストにマッピングします。
  • :array を指定した場合は配列にマッピングします。

デフォルト値は:sexp です。

(json-load "[1, 2, 3]" :seq :sexp)
;; => (1 2 3)

(json-load "[1, 2, 3]" :seq :array)
;; => #(1 2 3)
map

JSON の Objects のマッピング方法を指定します。

  • 引数は :sexp または :hash-table を指定します。
  • :sexp を指定した場合は関連リストにマッピングします。
  • :hash-table を指定した場合は hashtable にマッピングします。

デフォルト値は:sexp です。

(json-load "{xyzzy: common lisp, emacs: emacs lisp}" :map :sexp)
;; => (("xyzzy" . "common lisp") ("emacs" . "emacs lisp"))

(setf h (json-load "{xyzzy: common lisp, emacs: emacs lisp}" :map :hash-table))
;; => #<hashtable 52893588>
(gethash "xyzzy" h)
;; => "common lisp"
;;    t
(gethash "emacs" h)
;; => "emacs lisp"
;;    t

hash-table-test も参照してください。

hash-table-test

hash-table のテスト関数を指定します。

  • map に :hash-table を指定したときのみ有効なオプションです。
  • 指定可能な関数は eq, eql, equal, equalp です。

デフォルトは equal です。

(setf h (json-load "{name: hogehoge}" :map :hash-table))
;; => #<hashtable 52893564>
(hash-table-test h)
;; => equal
(gethash "name" h)
;; => "hogehoge"
;;    t
(gethash "NaME" h)
;; => nil
      nil

(setf h (json-load "{name: hogehoge}" :map :hash-table :hash-table-test #'equalp))
;; => #<hashtable 52893180>
(hash-table-test h)
;; => equalp
(gethash "name" h)
;; => "hogehoge"
;;    t
(gethash "NaME" h)
;; => "hogehoge"
;;    t
json-syck-version

call-seq:

(json-syck-version)  =>  "majar.minor.teeny"

json-syck (本ライブラリのこと) のバージョンを返します。

バージョンは major.minor.teeny という形式です。 それぞれの番号は必ず 1 桁にするので、以下のように比較することができます (Ruby と同じです :-)。

(if (string<= "1.1.0" (json-syck-version))
    (1.1.0 以降で有効な処理)
  (1.1.0 より前のバージョンでの処理))

6 LIMITATIONS

7 KNOWN BUGS

8 TODO

9 AUTHOR

みやむこ かつゆき (<URL:mailto:miyamuko (at) gmail.com>)

10 SEE ALSO

RFC 4627 The application/json Media Type for JavaScript Object Notation (JSON)
<URL:http://tools.ietf.org/html/rfc4627>
JSON の紹介
<URL:http://www.json.org/json-ja.html>

11 COPYRIGHT

json-syck は MIT/X ライセンスにしたがって利用可能です。

See json-syck/docs/MIT-LICENSE for full license.

12 NEWS

12.1 2008-07-12 / 0.1.1

json-syck 0.1.1 リリース!

新規機能
非互換を含む変更点
バグ修正
その他

12.2 2008-02-03 / 0.1.0

json-syck 0.1.0 リリース!

新規機能
非互換を含む変更点
バグ修正

12.3 2008-01-22 / 0.0.2

json-syck 0.0.2 リリース!

新規機能
非互換を含む変更点
バグ修正
その他

12.4 2008-01-21 / 0.0.1

json-syck 0.0.1 リリース!