首页 > 解决方案 > 使用 PHP 从 json 中转换和删除括号

问题描述

简化此 json 的最佳方法是什么?我的函数返回一个像这样的 json:

   {
    "token": {
        "0": "MJfdZLQRsu42VmUFzc9jozCa6mtJ0KJwziBEv3IXfr9RW_uhws",
        "user_id": 123,
        "username": "name"
    }
}

我的目标是实现这一目标:

{
   'token': "MJfdZLQRsu42VmUFzc9jozCa6mtJ0KJwziBEv3IXfr9RW_uhws",
   'username: "name",
   'user_id': '168'
}

这是返回 json 的方法:

class MyJWTManager extends JWTManager
{
    public function create(UserInterface $user)
    {
        $payload = ['roles' => null];
        $this->addUserIdentityToPayload($user, $payload);

        $jwtCreatedEvent = new JWTCreatedEvent($payload, $user);
        $this->dispatcher->dispatch(Events::JWT_CREATED, $jwtCreatedEvent);

        $jwtString = $this->jwtEncoder->encode($jwtCreatedEvent->getData());

        $jwtEncodedEvent = new JWTEncodedEvent($jwtString);
        $this->dispatcher->dispatch(Events::JWT_ENCODED, $jwtEncodedEvent);

        return [
            $jwtString,
            'user_id' => $user->getId(),
            'username' => $user->getUsername()
        ];
        // return $jwtString // outputs "token": "ssdsmdmasdms;dm;samd;msdm;sdm;sdm"    
        //return $userInfo;

    }
}

标签: phpsymfony

解决方案


提取令牌值并将其作为返回数组的一部分返回

class MyJWTManager extends JWTManager
{
    public function create(UserInterface $user)
    {
        $payload = ['roles' => null];
        $this->addUserIdentityToPayload($user, $payload);

        $jwtCreatedEvent = new JWTCreatedEvent($payload, $user);
        $this->dispatcher->dispatch(Events::JWT_CREATED, $jwtCreatedEvent);

        $jwtString = $this->jwtEncoder->encode($jwtCreatedEvent->getData());

        $jwtEncodedEvent = new JWTEncodedEvent($jwtString);
        $this->dispatcher->dispatch(Events::JWT_ENCODED, $jwtEncodedEvent);
        $ra=json_decode($jwtString,1);
        return [
            'token' => $ra['token'],
            'user_id' => $user->getId(),
            'username' => $user->getUsername()
        ];

    }
}

推荐阅读