-1

我正在创建一个存储用户旅程的 Web 应用程序,并且我在 CakePHP 2.2.5 中构建了这个应用程序。

我有一个 Journey 模型,该 Journey 模型有许多坐标对象,这些对象存储经纬度坐标。

我想向主体中包含 json 的旅程的 add 方法发送一个 API 调用,以创建一个新对象。

我试图找出如何格式化 JSON 以允许控制器使用它,但我似乎无法找到。我还想知道如何将子对象添加到 JSON。

我正在使用此 cURL 命令测试该方法

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

运行此 CURL 命令会在数据库中创建一个空白条目。

CURL 中包含的 JSON 文件包含

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

2 回答 2

1

最好将 json 转换为数组(带json_decode函数)然后操作你的数组,如果你想最后将它转换为 json(json_encode函数)。

cakePHP 通过JsHelper::object处理此任务

编辑1:但我认为当php为你做这件事时,最好使用php纯函数而不是cakePHP函数。

编辑 2:我认为 cakePHP 不处理它,你应该自己处理它,将你的 json 转换为数组,根据需要更改你的数组,foreach然后将它传递给 saveAll 函数以在数据库中插入或更新。

于 2013-01-11T18:15:09.180 回答
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。

于 2013-01-23T16:14:16.993 回答