Как сделать различную структуру JSON в PHP - PullRequest
0 голосов
/ 09 мая 2020

Я получаю данные из 2 таблиц: 1) для домашних баннеров и 2) для горячих предложений. И после этого делаю из него REST API. Но я получаю данные в json следующим образом:

 [
    {
        "homuri": "/Home/Banner/activity.png"
    },
    {
        "homuri": "/Home/Banner/fitness.png"
    },   
    {
        "hotdeal": "/Home/HotDeals/hotdeal1.png"
    },
    {
        "hotdeal": "/Home/HotDeals/hotdeal2.png"
    },
    {
        "hotdeal": "/Home/HotDeals/hotdeal3.png"
    },

]

Но я хочу, чтобы моя структура json выглядела так:

[
        "banner":{
            "homuri": "/Home/Banner/activity.png",
            "homuri": "/Home/Banner/fitness.png"
        },   
        "hotdeals":{
            "hotdeal": "/Home/HotDeals/hotdeal1.png",
            "hotdeal": "/Home/HotDeals/hotdeal2.png",
            "hotdeal": "/Home/HotDeals/hotdeal3.png",
        },    
]

Как этого добиться? и как мне получить доступ ко всем этим значениям в HTML? Ниже я прикрепляю свой код:

<?php

    include('dbconn.php');
    $request=$_SERVER['REQUEST_METHOD'];

    $data=array();
    switch($request)
    {
        case 'GET':
            response(getData());                        
    }

    function getData()
    {
        global $conn;
        @$col=$_GET['col'];

        $query=mysqli_query($conn,"select strHomeBannerUri as homuri from tblhomebannerdetails");

        while($row=mysqli_fetch_assoc($query))
        {
            $data[]=array("homuri"=>$row['homuri']);            
        }

        if($col=="pop")
        {
            $query=mysqli_query($conn,"select nHotrDealImageUri as hotdeal from tblhotdealimages");

        while($row=mysqli_fetch_assoc($query))
        {
            $data[]=array("hotdeal"=>$row['hotdeal']);          
        }

        }           
        return $data;           
    }


    function response($data)
    {
        echo json_encode($data);
    }
?>

1 Ответ

2 голосов
/ 09 мая 2020

То, как вы хотите, чтобы ваш JSON выглядел, не сработает - вы не можете использовать один ключ несколько раз на одном и том же «уровне вложенности».

function getData()
{
    global $conn;
    @$col=$_GET['col'];

    $query=mysqli_query($conn,"select strHomeBannerUri as homuri from tblhomebannerdetails");

    while($row=mysqli_fetch_assoc($query))
    {
        $data['homeuri'][]= $row['homuri'];            
    }

    if($col=="pop")
    {
        $query=mysqli_query($conn,"select nHotrDealImageUri as hotdeal from tblhotdealimages");

    while($row=mysqli_fetch_assoc($query))
    {
        $data['hotdeals'][]= $row['hotdeal'];          
    }

    }           
    return $data;           
}

Может помочь - у вас есть проблемы в вашем logi c, вы должны сами проверить, как писать и изменять массивы в PHP. Когда вы это сделаете, проверьте JSON и как структурировать JSON Объекты / Списки.

Приведенный выше код должен возвращать что-то вроде

{
    "banner":[
        "/Home/Banner/activity.png",
        "/Home/Banner/fitness.png"
    ],   
    "hotdeals":[
        "/Home/HotDeals/hotdeal1.png",
        "/Home/HotDeals/hotdeal2.png",
        "/Home/HotDeals/hotdeal3.png"
    ],    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...