読者です 読者をやめる 読者になる 読者になる

Haruyuki Mohri

毛利春幸のブログです。

C++Builder 10 Seattleで picojson.h

picojson.hを使ってみました。

kazuho/picojson · GitHub

C++BuilderなのでSystem.JSON.TJSONObjectがあるのですが....
"picojson.h"は ヘッダファイルだけなので楽です
std::stringしか使えないのですがAnsiStringにコピーして
UnicodeStringにしてやりゃUnicodeで使えますね。(ズル)

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    picojson::object obj1;
    picojson::object obj2;
    picojson::object obj3;
    String st1 = L"テスト";
    AnsiString as1 = st1;
    std::string s1 = as1.c_str();
    obj2["r1"] = (picojson::value)s1;
    obj3["r2"] = (picojson::value)10.0;
    obj1.insert(std::make_pair("t1", picojson::value(obj2)));
    obj1.insert(std::make_pair("t2", picojson::value(obj3)));
    picojson::value json1(obj1);

    std::string str = json1.serialize();

    AnsiString str2;
    str2 = str.c_str();
    Memo1->Lines->Text = str2 ;
}

出力
{"t1":{"r1":"テスト"},"t2":{"r2":10.000000}}

f:id:mojeld:20151130223409j:plain UnicodeStringにコピーしてやればAndroidでもiOSでも関係なく日本語が表示できます