2010-07-01 (木)
*C++用の簡易JSONパーサ(json.h)
includeするだけで使える簡単なJSONライブラリを公開しました.
インクルードするだけという同じコンセプトでpicojsonをKazuho@Cybozu Labsさんが公開されているので,たぶんそっちの方がちゃんと使えます.
picojson少し使ったのですが,しっくりこないので,試しに自分で書いてみました.json.hは手軽さ重視で作ってます.
昨日のhttp.hと合わせると,数行でweb上のAPI叩くプログラムがC++で書けます.
#include <iostream> #include "json.h" using namespace std; int main(int argc,int argv[]) { string s = "[1,null,[31 , 32, \"asdfg\\\"hjk\" , {\"hoge\" : -123e6 },123 ],null,5,0]"; json::jsvalue v; json::parse(v, s); cout << (int)v[2][1] << endl; cout << (string)v[2][2] << endl; cout << (int)v[2][3]["hoge"] << endl; cout << v[1].is_null() << endl; }
こんな感じで[]演算子で参照できます.配列なら数値で,オブジェクトなら文字列を添字としてください.
jsvalueは(int)か(string)にキャストされると,その内容を返します.
存在しない要素を参照すると,nullを表すオブジェクトが返りますが,nullの要素と区別できないので,後でundefinedを追加する予定です.
あと,構文チェックまだ実装してないので,parse()は常にtrue返します.