スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[C++][JSON] picojson

今更感もあるけど、最近になり個人的にハマっているもの。

JSONフォーマル結構使いやすいと思います。
で、本日「SystemC Japan2015」なのでC++ でしょ。

その時に includeだけでいい簡単な picojson を使ってます。

  • test.json
{
  "TEST" : {
  ¦ "Value" : 10,
  ¦ "Array" : [20,30,40],
  ¦ "String":"Example Test"
  }
}
  • main.cpp

#include <iostream>
#include <fstream>
#include "picojson.h"

int main(int argc, char const* argv[])
{
  std::ifstream ifs(argv[1]);
  picojson::value v;

  ifs >> v;
  
  std::string err = picojson::get_last_error();
  if (! err.empty()) {
  ¦ std::cerr << err << std::endl;
  ¦ exit(1);
  }
  
  // check if the type of the value is "object"
  if (! v.is<picojson::object>()) {
  ¦ std::cerr << "JSON is not an object" << std::endl;
  ¦ exit(2);
  }

  picojson::object& o = v.get<picojson::object>()["TEST"].get<picojson::object>();

  std::cout << "Value  = " << o["Value"].get<double>() << std::endl;

  picojson::array& a = o["Array"].get<picojson::array>();
  for(picojson::array::iterator it = a.begin(); it != a.end(); it++) {
  ¦ std::cout << "Array = " << it->get<double>() << std::endl;
  }

  std::cout << "String = " << o["String"].get<std::string>() << std::endl;
 
  return 0;
}

実行結果

こんな感じで取得することが出来ます。 数値は数値で取得出来るところがいいなと。


$> ./a.out test.json 
Value  = 10
Array = 20
Array = 30
Array = 40
String = Example Test

関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。