【问题标题】:What should JSON look like for a CakePHP controller?对于 CakePHP 控制器,JSON 应该是什么样的?
【发布时间】:2013-01-11 17:59:08
【问题描述】:

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

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

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

我试图找出如何格式化 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}

【问题讨论】:

    标签: json api cakephp cakephp-2.2


    【解决方案1】:

    最好将 json 转换为数组(使用 json_decode 函数)然后操作您的数组,如果您想最后将其转换为 json(json_encode 函数)。

    cakePHP 由 JsHelper::object 处理此任务

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

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

    【讨论】:

    • CakePHP 不会自动处理 JSON 吗?
    • 感谢您的编辑。也许我在最初的帖子中并不清楚,但我正在寻找的是自己构建 JSON 的语法,这样当我在控制器中调用 $this->Journey->save($this->request->data 时,它应该知道 JSON 的每个元素应该去哪里。类似于此链接中的内容CakePHP Docs
    【解决方案2】:

    我进行了更多研究并找到了解决问题的方法:

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多