前提・実現したいこと
ここに質問の内容を詳しく書いてください。
VisualStudio2012 C++に、picojson( https://github.com/kazuho/picojson )を組み込んで
とあるjsonファイルを読みこませようとしたのですが、jsonファイルの階層構造に対応した読込がうまくいかず
躓いてしまっています。うまく読みこむことができません。
(一番欲しいデータは、jsonファイルにある"paths"のarrayにある複数の2次元配列です)
単純な1階層目ではビルドも通り、実行しても読みこまれているようなのですが、
途中array構造の中のパラメータを読みこませるところから、うまくいかない状態です。
該当のソースコード
Visual Studio 2012 C++
--- 読込みのためのソースコード ---
// ファイルを読み込むための変数 std::ifstream fs; // ファイルを読み込む fs.open("sample.json", std::ios::binary); // 読み込みチェック // fs変数にデータがなければエラー assert(fs); // Picojsonへ読み込む picojson::value val; fs >> val; // fs変数はもう使わないので閉鎖 fs.close(); // Playerの名前を取得 picojson::object& obj = val.get<picojson::object>(); picojson::array& feat = obj["features"].get<picojson::array>(); // ★ここまでは読みこめる ----- 読みこませたいjsonファイル(sample.json) ----- ```ここに言語を入力```ここに言語を入力 コード
■sample.json { "displayFieldName": "", "geoType": "geotype01", "features": [ { "attributes": { "FID": 0, "prop0": "123456" }, "param": { "paths": [ [ [ 100.123, 23.456 ], [ 123.456, 34.567 ], [ 135.790, 45.678 ], [ 111.222, 56.789 ] ] ] } }, { "attributes": { "FID": 1, "prop0": "124816" }, "param": { "paths": [ [ [ 123.456, 98.876 ], [ 234.567, 87.654 ], [ 345.678, 76.543 ], [ 456.789, 65.432 ] ] ] } }, ], "fieldAliases": { "FID": "FID", "prop0": "prop0" }, "fields": [ { "alias": "FID", "name": "FID", "type": "FieldTypeAAA" }, { "alias": "prop0", "length": 254, "name": "prop0", "type": "FieldTypeString" } ], "spatialReference": { "latestWkid": 4321, "wkid": 4321 } } ----- sample.json ここまで ------ ### 試したこと ここに問題に対して試したことを記載してください。 "feature"のタグのついたarrayが複数(ここでは2つ)あるので、それを picojson::array& feat = obj["features"].get<picojson::array>(); で読ませました。 ただ、そのあと、arrayの中にある各種タグのついたデータの読み込み方がわからず詰まってしまっています。 // featuresの数ぶんまわす for (int i = 0; i < feat.size(); i++){ // attributes string hoge = obj["attributes"].get<string>(); 、、、 のように、"features"のarrayのかずだけループで読ませるのかと思ったのですがダメでした。 -----
```ここに言語を入力 "attributes": { "FID": 0, "prop0": "123456" }, "param": { "paths": [ [ [ 100.123, 23.456 ],
のように階層が何層にも続いているので、それを読ませる方法がわからなくて困っています。
(picojsonの紹介サイトは多いのですが、sampleのような階層構造になっているものに対しての記述が載っているサイトが
見当たらなくて困っています)
補足情報(FW/ツールのバージョンなど)
先にも書きましたが、
・sample.jsonのような階層構造になっている場合の読み込みのための記述方法を教えていただきたい
・一番欲しいデータは"paths"のarrayにある複数の2次元配列で、vector型で格納したいと考えています。
もしお分かりの方がいらっしゃいましたら、記述する際のコツやノウハウについて教えていただけると大変助かります。
是非ご教授いただけますようよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/07 05:09
2020/07/07 11:51 編集