首页 > 解决方案 > dreamfactory php 脚本 post.post_process 有效载荷修改

问题描述

嗨,我使用 Dreamfactory 作为 REST API 后端,我需要一个 PHP 脚本来预处理一个 POST api 请求,该请求可以修改我收到的有效负载:

{“时间”:“2018-12-21T07:49:23”,“BME680”:{“温度”:20.3,“湿度”:41.8,“压力”:1021.1,“气体”:286.65}

对此:

{“时间”:“2018-12-21T07:49:23”,“温度”:20.3,“湿度”:41.8,“压力”:1021.1,“气体”:286.65}

如何使用 PHP 脚本来实现这一点?

标签: phppayloaddreamfactory

解决方案


首先,让我们定义一个使结果友好的辅助函数

function getFriendlyResult(k, input) {
    var output = {};
    for (var key in input) {
        if (key !== k) output[key] = input[key];
    }
    for (var innerKey in input[k]) output[innerKey] = input[innerKey];
    return output;
}

你可以这样称呼它:

getFriendlyResult(“BME680”, {“Time”:“2018-12-21T07:49:23”,“BME680”:{“Temperature”:20.3,“Humidity”:41.8,“Pressure”:1021.1,“Gas”:286.65});

编辑

要在 PHP 中实现这一点,您可以调用json_decode并传递您的 JSON,例如

$resultArray = json_decode($input, true);

然后在 PHP 中实现与我在 Javascript 中描述的相同的算法。

编辑

这是 PHP 中未经测试的实现:

function getFriendlyResult($k, $input) {
    $output = array();
    foreach ($input as $key => $value) {
        if ($key !== $k) $output[$key] = $value;
    }
    foreach ($input[$k] as $innerKey => $innerValue) {
        $output[$innerKey] = $innerValue;
    }
    return $output;
}

$result = json_decode($yourJSON, true);

推荐阅读