dtg7662 2014-04-03 06:23
浏览 42
已采纳

Slim Framework中间件数组json操作

I am trying to implement a simple middleware in Slim Framework that adds an array element in the response body. Without the middleware I am getting correct result as {"mytest":"running"}. What I really want is to have the middle ware merge another element and make it as {"mytest":"running","MODE":"development"}. Instead, I am getting this result {"0":"{\"mytest\"","1":"\"running\"}","MODE":"development"} .

I am definitely missing something very simple. Please have a look below for the code I am using. I guess I am not able to convert the body to an array.

This is what I am doing:

index.php

require 'Vendor/Slim/Slim.php';
\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim();

//Middleware
$app->add(new \Slim\Middleware\TestMiddleware());

 // Middleware Test
    $app->get( 
        '/mid',
        function () use ($app) {
          $response = $app->response();
          $response->body(json_encode(array(
                'mytest'=>'running'
                )));

        }
    );

TestMiddleware.php

namespace Slim\Middleware;

//Appends mode to the response bpoy
class TestMiddleware extends \Slim\Middleware
{
    public function call()
    {
        $app=$this->app;

        $this->next->call();

        $res=$app->response;
        $body=$res->getBody();
        $res->setBody(
            json_encode(
                     array_merge(
                       explode(":",$body),array(
                'MODE'=>'development'
            )))
        );

    }

}
  • 写回答

1条回答 默认 最新

  • dtnat7146 2014-04-04 21:49
    关注

    Instead of explode try to decode your json before to merge arrays:

    json_encode(
        array_merge(
            json_decode($body,true),
            array('MODE'=>'development')
        )
    )
    

    DEMO

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算