SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

C++でJSONを読む

  • X ポスト
  • このエントリーをはてなブックマークに追加

 おシゴトでJSONを扱うことになりました。どこぞのサーバがWeb-serviceをホストしてて、サービスとのやりとり(リクエストとその応答)がJSONで行われるらしく、C++でJSONを読み取る方法をリサーチしてくれとのこと。

  • X ポスト
  • このエントリーをはてなブックマークに追加

 Web-serviceのインターフェースはXMLがよく用いられますが、近頃はJSONが増えてきたみたいです。JSONはXMLに比べフォーマットが単純で伝文がコンパクト、軽量インターフェースなのでスマホのような(デスクトップ機よりは)非力なクライアントでも楽に扱えますからね。そんなわけでC++でJSONを扱うべくリサーチを始めました。

JSONの構造

 JSON:JavaScript Object 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はキーと値の組を並べたもの、いわゆる連想配列あるいは辞書と呼ばれるアレです。キーはstring、値はvalueで、key:value を「,」で区切って並べ、「{」と「}」で囲みます。

 そしてもう一つ、値を持たないこと(無効値)を表す:

  • null

もvalueの一員です。

 これらのvalueを文字列で表現したJSON textが伝文としてやりとりされるのですが、JSON textはarrayまたはobjectでなくてはなりません。さらに、JSON textはUnicodeでなくてはなりません(通常UTF-8が用いられます)。

 RFC4627の末尾にあったJSON textの一例:example.jsonを以下に示します。読みやすいようにインデント/改行していますが、伝文として用いるときはメッセージ長をケチるためか、改行/空白をはしょってギチギチに詰められることが多いようです。

 テキストとしても読みやすいですね。難点があるとすれば「コメントが書けない」ことでしょうか。メッセージのやりとりが目的の記法でありヒトサマが読むことは考えてないので仕方がないことではありますが。

次のページ
PicoJSON

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

επιστημη(エピステーメー)

C++に首まで浸かったプログラマ。Microsoft MVP, Visual C++ (2004.01~2018.06) "だった"りわんくま同盟でたまにセッションスピーカやったり中国茶淹れてにわか茶...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7735 2014/05/13 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング