2010-06 << 2010-07 >> 2010-08

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返します.

2010-06 << 2010-07 >> 2010-08