我有兩個軌道型號:自定義從Rails控制器格式化爲JSON
的里程碑有許多任務 任務屬於一個里程碑
在我的控制器中我調用如下
@milestones = Milestone.all
render :json => @milestones.to_json(:include => :tasks)
這給了我:
[ {
"id": 5,
"name": "This is milestone #1",
"tasks": [{
"complete": false,
"id": 60,
"name": "aaaaa",
"milestone_id": 5,
}, {
"complete": false,
"id": 62,
"name": "ccccc",
"milestone_id": 5,
}
]
}, {
"id": 6,
"name": "This is milestone #2",
"tasks": [{
"complete": false,
"id": 65,
"name": "ffffff",
"milestone_id": 5,
}, {
"complete": false,
"id": 66,
"name": "gggggg",
"milestone_id": 5,
}
]
}
]
但我需要能夠輕鬆瀏覽JSON,因此我希望能夠像這樣格式化(注意每個「子數組」都標有「milestone_ID」或「task_ID」):
[
"milestone_5": {
"id": 5,
"name": "This is milestone #1",
"tasks": [
"task_60":{
"complete": false,
"id": 60,
"name": "aaaaa",
"milestone_id": 5,
},
"task_62":{
"complete": false,
"id": 62,
"name": "ccccc",
"milestone_id": 5,
}
]
},
"milestone_6":{
"id": 6,
"name": "This is milestone #2",
"tasks": [
"task_65":{
"complete": false,
"id": 65,
"name": "ffffff",
"milestone_id": 5,
},
"task_66":{
"complete": false,
"id": 66,
"name": "gggggg",
"milestone_id": 5,
}
]
}
]
沒有任何人有任何想法如何讓Rails的自定義格式JSON。即使我不得不失去「里程碑」部分,只是吐出ID,那也是非常有用的。
謝謝!
是否有一個特定的原因需要它是「milestone_6」而不是一系列里程碑?你的輸出似乎擊敗了json的許多目的。爲什麼每個鍵都需要包含'id',如果你已經有了它的值呢? – nzifnab 2013-05-03 21:20:04
在密鑰中包含id將使我可以更輕鬆地瀏覽嵌套的json。我必須做很多替換/更新,因爲我使用的是前端MVC。 – nathan 2013-05-04 16:48:27