【问题标题】:JSON-output formats in RESTREST 中的 JSON 输出格式
【发布时间】:2015-02-17 11:15:58
【问题描述】:

我有一个类似的结构,由 REST Api 返回:

{
    "id": 1,
    "type": "A",
    "name": "blah, blah"
}

自然输出样本如下:

[
    {
        "id": 1,
        "type": "A",
        "name": "blah, blah"
    },
    {
        "id": 1,
        "type": "A",
        "name": "blah, blah"
    },
    {
        "id": 1,
        "type": "B",
        "name": "blah, blah"
    },
    {
        "id": 1,
        "type": "C",
        "name": "blah, blah"
    }
]

为方便起见,我宁愿以分组格式(围绕“类型”)输出,如下所示:

{
    "A": [
        {
            "id": 1,
            "name": "blah, blah"
        },
        {
            "id": 1,
            "name": "blah, blah"
        }
    ],
    "B": [
        {
            "id": 1,
            "type": "B",
            "name": "blah, blah"
        }
    ],
    "C": [
        {
            "id": 1,
            "type": "C",
            "name": "blah, blah"
        }
    ]
}

在输入参数方面是否有一种通用的、REST 友好的方式来执行此操作?

我有一个参数“response_mode”,它可以是 FLAT 或 GROUPED,但不确定从 RESTful 角度来看是否可以。

【问题讨论】:

    标签: json restful-url


    【解决方案1】:

    在php中我会这样排序:

    <?php
    
    $response = '[
        {
            "id": 1,
            "type": "A",
            "name": "blah, blah"
        },
        {
            "id": 1,
            "type": "A",
            "name": "blah, blah"
        },
        {
            "id": 1,
            "type": "B",
            "name": "blah, blah"
        },
        {
            "id": 1,
            "type": "C",
            "name": "blah, blah"
        }
    ]';
    
    $jsonDecoded = json_decode($response);
    $newResponse = array();
    
    foreach($jsonDecoded as $jd) {
       $newResponse[$jd->type][] = array(
          "id"   => $jd->id,
          "type" => $jd->type,
          "name" => $jd->name
       );
    }
    
    echo json_encode($newResponse);
    

    【讨论】:

    • 感谢您的回答,但这不是我要问的。问题不是如何做,而是它是否对 REST 友好。其实问题不是很清楚,我会解决的。
    • 啊,误会了。至于参数,如果是我,我会允许 ?groupBy=type 在 url 中输出该格式。
    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 2018-01-20
    • 2021-01-30
    • 2016-12-31
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多