基于PHP条件的复杂对象的JSON输出

时间:2020-09-07 11:14:12

标签: php json

我有一个具有多个级别的复杂PHP对象。树中的所有对象都实现JsonSerializable接口,因此默认编码可以正常工作。

但是,我想根据登录用户生成不同的输出。对象内部有价格信息,对于简单用户,我想将其隐藏在JSON中,但对于管理员,我希望它存在。

例如: 对于普通用户: {...{id:1, title: 'product1'}...}

对于管理员:{...{id:1, title: 'product1', price: 100}...}

我正在使用具有强类型的PHP 7.4。

有一种简单的方法吗?

测试数据:

catalog : {
    id: 1,
    title: 'Catalog A',
    locations : [{
        id: 100,
        type: 'INTERNAL',
        boxes: [{
            id: 200,
            barcode: '1234',
            products: [{
                id: 500,
                title: 'Product1',
                price: 100
            }, {
                id: 501,
                title: 'Product2',
                price: 170
            }]
        },{
            id: 201,
            barcode: '5874',
            products: [{
                id: 600,
                title: 'ProductA',
                price: 70
            }, {
                id: 601,
                title: 'ProductB',
                price: 75
            }]
        }]
    }]
}

示例PHP类:

class Product implements JsonSerializable {
    private ?int $id;
    private string $title;
    private int $price;

    ...

    public function jsonSerialize() {
        return get_object_vars($this);
    }
}

0 个答案:

没有答案