Qt5でJSON

みょみょみょ.

最近, いろいろあってQt5を触っています(近いうちの記事で詳しく書きます).
ちょっとJSON文字列をQtの機能だけでParseしたくなって, どう書けばいいのか粘っていたらこうなった.

あるJSONの"relationship" => "source" => "screen_name"が指している文字列("bert")を取得することを考えてみます.

QtのJSON周りの主要なクラスにはQJsonDocument, QJsonObject, QJsonValueの3つがあるようです.
QJsonDocumentはJSONドキュメント自体を扱うクラス,
QJsonObjectはパースされたJSONのKeyを扱うクラス,
QJsonValueはJSONの各keyが指しているValueを扱うクラスです.

まず, JSON文字列をParseするにはQJsonDocumentクラスを使います. Parseする方法はいくつかありますが, QJsonDocument::fromJson()QByteArrayに変換したJSON文章を渡すのが確実っぽい感じでした.

ParseしたJSONの各要素を扱うため, QJsonDocument.object()を使ってQJsonDocumentからQJsonObjectを取得します.

QJsonObjectで, あるKeyが指しているValueを取得するにはQJsonObject.value("hoge")を使います. するとQJsonValueが返ってきます.

この状態で目的のValueに辿り着いたのであればQJsonValue.toString()QJsonValue.toDouble()で文字列や数値に変換してやります.
しかし, 更に深い要素が欲しいのであればQJsonValue.toObject()で再びQJsonObjectに変換してやり, 同様に.value("hoge").toObject().value("fuga")...と続けていきます.

求: Qtの機能だけでもっとCoolに各Valueを取得する方法

2015

あけましておめでとうございますー.
今年もよろしくお願いします.

今年の目標のようなもの

プログラミング等

  • C++
    • template力付ける
    • twitppをもう少しマトモにする
    • twitppを使った何かを公開する
  • 違う言語に軽く触れる
  • セキュキャンの課題をある程度解ける程度の力を付ける

資格等

  • 昨年の基本情報に続き応用情報に挑戦
  • 今年もTOEIC100点上げる

学校

  • とりあえず進級
    • 次の学年は大変だろうけどなんとか耐える
    • 電気便器科の教科も落とさない程度にがんばる
  • 図書館にまともな書籍をリクエストしまくる
  • ごちうさ布教

その他

  • ペーパーにならない程度に車を動かす
  • 衝動買いに気をつける
  • リアル/ネット上問わず発言に気をつける
  • 近い地域の勉強会やOSC等に積極的に参加