JSONファイルそのものをどうやって読めばいいのかって点ですが。。。
ところで話は変わって、【オブジェクト指向】ってあるじゃないですか。
よく、直感的に、思考に近い形でとか言いますよね。
CODINGは、要するに、object指向かどうかが問題なのではなくて、
頭でわかりやすいかどうかです。
単純なものほどわかりやすいのは至極当然。
よって、TREE構造のものを読み込むことを考えたときに、、
全て展開したTREEを、上から1行ずつ読み込んでいくような、そんな感じで読み込みましょう。
ポイントは、いくつかの文字の判定とその分岐です。
考えるのは、、
【"】【:】【{】【}】【[】【]】【,】
の7つだけです。
といったところで、こんな感じでつくってみました。
★
- //wpは文字列の配列
- for(int w=0;wp[w]!=0;w++){
- if(ダブルクォーテーション){
- //-----------------------------
- if(bIn){
- // ここで文字列が終わるので、文字列の特定
- }
- //-----------------------------
- else{
- // 文字列の始まりを憶えて置く
- }
- //-----------------------------
- bIn = ! bIn;
- }
- if(bIn) continue;//次へ
- else if(コロン){ // 【:】
- // キーを確定させる
- // 値の開始位置を覚える
- }
- else if(中カッコ開始){ // 【{】
- // 現在のobjectをPUSHする
- // 現在のobjectの下にobjectを生成してそれを現在のobjectにする
- }
- else if(中カッコ終了){ // 【}】
- //キーと値を調べて、少なくとも値があったら現在のobjectに登録
- //キーは無い場合もある
- //現在のobjectをひとつPOPする
- }
- else if(大カッコ開始){ // 【[】
- // 現在のobjectをPUSHする
- // 現在のobjectの下にobjectを生成してそれを現在のobjectにする
- }
- else if(大カッコ終了){ // 【]】
- //キーと値を調べて、少なくとも値があったら現在のobjectに登録
- //キーは無い場合もある
- //現在のobjectをひとつPOPする
- }
- else if(カンマ){ // 【,】
- //キーと値を調べて、少なくとも値があったら現在のobjectに登録
- //キーは無い場合もある
- }
- //-----------------------------
- }
- /*
- ポイント
- 文字列を判断すること
- キーと値を判断すること
- */
値については、【"】ではじまるかどうかで、文字列かどうかを判定するわけですね。
もちろん、このLOOPに入る前に、\\と\"をなんらかの方法で退避させ、値をobjectに登録するときに戻してやりますよ。。
たぶん、つづく。。。
0 件のコメント:
コメントを投稿