やりたいことの概要
railsにおいて、zipフォルダをアップロードされた際、そのディレクトリの構造をjson形式で以下の様に表現したい。
{ name: "test" isfile: false children: [ { name: "aaa.txt" isfile: true }, { name: "test1" isfile: false children: [ { name: "bbb.txt" isfile: true }, { name: "test2" isfile: false children: [ { name: "ccc.txt" isfile: true } ] }, { name: "test3" isfile: false children: [ { name: "ddd.txt" isfile: false } ] } ] } ] }
※なんとなくファイル構造を表現できていれば⇑と全く一緒じゃなくても全然問題ないです。
詳細及び現状
test ├── aaa.txt └── test1 ├── bbb.txt ├── test2 │ └── ccc.txt └── test3 └── ddd.txt
現状として、これをzip化したファイルをrails側で@filesという変数で受け取っていて、
@files = [ "test/aaa.txt", "test/test1/bbb.txt", "test/test1/test2/ccc.txt", "test/test1/test3/ddd.txt" ]
となっています。この情報からjbuilderで今の所@filesの各パスを下記のように表現できました
(配列に@filesの各パスをツリーで表現したhashが入っている状態)
ただ、ここからどうやって最初の目標のjsonのように結合できるかがわからない状況です。
deep_mergeを使っても上書きされてしまい、上書きされないでchildrenのキー以下だけをマージできる方法を解答していただきたく投稿した次第です。
まとめ
結論としてやりたいことは、
- 最後の画像のjsonを、最初の"やりたいことの概要"のjsonにどうやったら変形できるかが知りたい
- あるいは@filesの情報から直で最初のjsonのようなファイル構造を表現する方法でも、なんかのgemを使ってzipfileのデータからファイル構造を取得する方法でも構わない
といった感じです。
よろしくお願いしますmm
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/04 05:22 編集
2020/05/04 05:59
2020/05/04 06:40 編集
2020/05/04 11:51