【问题标题】:Try to post array of objects from postman to php api and get errors尝试将对象数组从邮递员发布到 php api 并得到错误
【发布时间】:2020-07-09 17:38:27
【问题描述】:

我来自 JavaScript 世界,这种语法对我来说很奇怪。

我尝试从邮递员发送带有如下对象数组的帖子请求:

我的php代码:

<?php
$signatures = $_POST["signatures"];
$signature = array_filter($signatures);
echo json_encode($signature);

但我从邮递员那里得到的回应是:

【问题讨论】:

  • signatures[] 没有索引,dict 值根本没有[]
  • 还是不行@HagaiWild

标签: php postman


【解决方案1】:

我认为你这样做是不可能的,你只能使用POSTGET传输字符串,尝试在一个KEY中发送所有数据,然后在服务端json_decode它。所以试着发送这样的东西

[
  {
    "id": 1,
    "flowID": 1,
    "fileID": 1,
    "type": "partner",
    "page": 1
  }
]

作为VALUE,与KEYsignatures,然后在PHP代码中:

<?php
$signatures = json_decode($_POST["signatures"]); // <=== this is an array now
print_r($signature);

【讨论】:

  • 我用 application/json 和 urlencoded 试试这个,但它不起作用。
  • 可能你做的不对,我的同事(一个移动应用开发者)和我用这种方法开发了一些应用,那最好调试一下,我认为这是最好的做法。
  • 你在 application/json 上发送数组?
  • @WebDeveloper 号
【解决方案2】:

您正在尝试过滤一个数组,但您没有编写如何过滤它(第二个参数)

    <?php
$signatures = $_POST["signatures"];
$signature = array_filter($signatures,<**variabile or function to be filtered**>);
echo json_encode($signature);

【讨论】:

  • 我还是不明白第二个参数是什么?为什么我需要他?我只想得到帖子的正文。
【解决方案3】:

如何发送对象数组: 将邮递员设置为 application/json 并发布正文:

[
    {
        "id": 1,
        "flowID": 1,
        "fileID": 2,
        "type": "identification",
        "page": 1,
        "positionX": 160,
        "positionY": 241,
        "sizeWidth": 150,
        "sizeHeight": 250
    },
        {
        "id": 2,
        "flowID": 4,
        "fileID": 2,
        "type": "partner",
        "page": 1,
        "positionX": 160,
        "positionY": 241,
        "sizeWidth": 150,
        "sizeHeight": 250
    }
]

获取请求正文并使其成为数组:

$rawPostBody = file_get_contents('php://input');
$signatures = (array)json_decode($rawPostBody);

遍历数组:

foreach($signatures as $signature) {
    echo $signature->type;
}

希望这对那些一直在寻找如何做到这一点的人有所帮助。

【讨论】:

    猜你喜欢
    • 2021-01-11
    • 2019-05-06
    • 2019-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2011-10-02
    相关资源
    最近更新 更多