KB)おシゴトでJSONを扱うことになりました。どこぞのサーバがWeb-serviceをホストしてて、サービスとのやりとり(リクエストとその応答)がJSONで行われるらしく、C++でJSONを読み取る方法をリサーチしてくれとのこと。目次Page1JSONの構造Page2PicoJSONPage3Windows::Data::JsonWeb-serviceのインターフェースはXMLがよく用いられますが、近頃はJSONが増えてきたみたいです。JSONはXMLに比べフォーマットが単純で伝文がコンパクト、軽量インターフェースなのでスマホのような(デスクトップ機よりは)非力なクライアントでも楽に扱えますからね。そんなわけでC++でJSONを扱うべくリサーチを始めました。Notation(JavaScriptオブジェクト記法)、RFC4627(PDF)で規定されています。英文とはいえ10ページにも満たない小さな規格ですからさほどの苦労もなく理解できます。えーと、まずJSONで表現できるvalue(値)は:boolean(真偽値)number(数値)string(文字列)の3つの基本型。booleanはtrueかfalse、numberは浮動小数点いわゆるdouble値(整数値はありません)、stringは文字通り「"」で囲まれた文字列です。構造をもったvalueとして:array(配列)object(オブジェクト)があります。arrayは0個以上のvalueを内包する順序列、valueを「,」で区切り、「[」と「]」で囲みます。objectはキーと値の組を並べたもの、いわゆる連想配列あるいは辞書と呼ばれるアレです。「,」で区切って並べ、「{」と「}」で囲みます。一つ、値を持たないこと(無効値)を表す:nullもvalueの一員です。textはarrayまたはobjectでなくてはなりません。textはUnicodeでなくてはなりません(通常UTF-8が用いられます)。textの一例:example.jsonを以下に示します。読みやすいようにインデント/改行していますが、伝文として用いるときはメッセージ長をケチるためか、改行/空白をはしょってギチギチに詰められることが多いようです。テキストとしても読みやすいですね。難点があるとすれば「コメントが書けない」ことでしょうか。メッセージのやりとりが目的の記法でありヒトサマが読むことは考えてないので仕方がないことではありますが。印刷用を表示ブックマークツイート著者プロフィールεπιστημη(エピステーメー)C++に首まで浸かったプログラマ。圧縮・解凍UNIX基本講座@CodeZine『CodeZine(コードジン)』の公式アカウントです。【NEW】デブスト2019デブサミ2019福岡・関西デブサミ2019夏デブスト関西デブサミ2019×ログインEメールパスワード※旧SEメンバーシップ会員の方は、同じ登録情報(Eメール&パスワード)でログインいただけます。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。