SakuraCrowd’s blog

ゲーム製作を中心としたパソコン関係のブログです。気軽にコメントしてください。

SakuraCrowd's BlogSpot にお引越しをしつつあります。
マッハこうもり ver1.1
マッハこうもり ver1.1
BLK2048
BLK2048
CandyMaze
CandyMaze
くの一宅配便
くの一宅配便
団子大砲 ver1.1
団子大砲 ver1.1

プチコン3号 関連記事のリスト
作品集の公開キーは【43K534A3】です。2015/03/04にアップロード。プチコン 3.1.0 で動作確認済みです。
ニンドリ公式ライブラリの公開キー【VK3KN3DM】から、同じ作品集をダウンロードできます。
マッハこうもり(MACH_BAT1_1), BLK2048, CandyMaze, くの一宅配便(9_1DELI)をプレイすることができます。

CandyMazeプチコン3号 - プチコン大喜利のアイディア賞にノミネートされました!
日経ソフトウェア2015年4月号「くの一宅配便」が掲載されました!専用の公開キーは【7474X33J】です。

Unity
団子大砲 ver1.1を公開しました。時間を表示し、ツイートとリセット機能を追加しました。
あほげー 第16回作品にエントリーしました。59作品中36位のあほさらしいです。エントリーしたver1.0はこちらです。

JSON のオブジェクトを ID でリンクする(4)

gistb28ba8146f829f3f3254

JSON のオブジェクトを ID でリンクする(3) - SakuraCrowd’s blog の続きです。前回まではテストケースをクリアする実装までいけていたのですが、今回はテストケースを書いたまでで、それを満たす実装は勉強中です。

いつもどおり、仕様の説明は gist のコメントに書いてあります。

簡単に言うと、複数のオブジェクトが集まっている構造の中で一部だけを処理できるようにしました。

それだけならば、その一部のオブジェクトを引数にくわせりゃいいじゃんと思うんですが、 ID からデータに置換するには JSONPath の絶対パスを利用しています。

そのためルートが変わってしまうと ID からデータに置換できなくなってしまうのです。

 

JSONPath とか XPath とかパスもいろいろあるね(`・ω・´)

そんなかんなで jsonPath を使って処理を開始するノード要素を取得する処理を追加しました。

最初にはまったのはルートは "$" だから jsonPath.eval(target, "$") とすれば target の値が返されると思ったところでした。

実際は空の配列が返って来ます。

XPath の仕様などの説明を読んだところ、どうやらルートノードとルート要素というものは別物らしいです。

そして JSONPath でルート要素を表す場合は "$.*" とします。

これで target の値が取得できました。

 

eval だからって、えばる(eval)な!←いってみたかっただけです><

しかし、今度は ret = jsonPath.eval(target, "$.*") が ret == target ですが ret !== target になっています!

これでは、共通のオブジェクトへリンクする処理ではなく、同じ値を持つ別のオブジェクトへのリンクとなってしまいます。

どうすればいいのかなー。

現状はそんなところです。