2013-01-11 16 views
-1

我正在創建一個存儲用戶旅程的Web應用程序,並且我在CakePHP 2.2.5中構建了此應用程序。CakePHP控制器應該如何處理JSON?

我有一個Journey模型,那個旅程模型有很多座標對象存儲緯度座標。

我想發送一個API調用到旅程的包含json的add方法來創建一個新的對象。

我試圖找出如何格式化JSON以允許控制器使用它,但我似乎無法找到。我也想知道如何將子對象添加到JSON。

我測試使用這個cURL命令

curl -i -H "ACCEPT: application/json" -X POST --data @/home/sam/data.json http://localhost/journeys/add.json 

運行這個curl命令在數據庫中創建一個空白項的方法。

列入捲曲JSON文件包含

{"description" : "Hello World", "user_id":3} 

回答

0

我已經做了一些調查研究,並找到了解決我的問題:

CakePHP會保存JSON數據,它也將保存嵌套的模型信息。

$data = $this->request->input('json_decode'); 

這是類似於@Arash說,但它也將通過調用

$this->Journey->saveAssociated($data) 

我提供給控制器的JSON看起來像保存嵌套的模型信息:

{"Journey": 
{"description":"Not even an article from the map", "user_id":3}, 
"Coordinate":[ 
    {"lat":54.229149, "lng":-5.114115}, 
    {"lat":54.39153, "lng":-5.114113} 
] 
} 

座標屬於Journey。

1

最好是JSON轉換成陣列(json_decode功能),然後操縱你的數組,如果你想在最後將其轉換成JSON(json_encode功能)。

CakePHP的處理此任務:JsHelper::object

編輯1:但我覺得當PHP爲你做它,它是更好地使用PHP純函數代替CakePHP的功能。編輯2:我認爲cakePHP沒有處理它,你應該自己處理它,將你的json轉換爲數組,然後在foreach中將你的數組更改爲foreach,然後將它傳遞給saveAll函數以便在數據庫中插入或更新。

+0

CakePHP不會自動處理JSON嗎? –

+0

我編輯我的答案... –

+0

感謝您的編輯。也許我在最初的文章中並不清楚,但是我正在尋找的是自己構建JSON的語法,以便當我調用$ this-> Journey-> save($ this-> request-> data'我的控制器應該知道JSON的每個元素應該在哪裏。類似於這個鏈接[CakePHP Docs](http://book.cakephp.org/2.0/en/models/saving-your-data.html #model-savemany-array-data-null-array-options-array) –

相關問題