I've done some more research and found a solution to my problem:
CakePHP will save JSON data and it will also save nested model information.
$data = $this->request->input('json_decode');
Which is similar to what @Arash said but it will also save nested model information by calling
$this->Journey->saveAssociated($data)
The JSON I'm providing to the controller looks like:
{"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}
]
}
Where coordinate belongs to Journey.