конвертировать JSON в объект PHP - PullRequest
0 голосов
/ 08 ноября 2019

Я только что узнал php

У меня есть отдельная таблица базы данных, и я хочу объединить эту таблицу только с одним параметром с выводом JSON, но полученный вывод неверен, как изменить мой JSON на json, которыйявляется правильным и простым в использовании.

спасибо

вывод json:

[
 [
    {
        "id_service": "3",
        "reference_number": "",
        "tracking_number": "RJC-0000-0001",
        "kd_inbound": "INB-1000-0001",
        "tgl_inbound": "2019-11-07 00:00:00",
        "status_inb": "1"
    }
 ],
 [
    {
        "id_service": "3",
        "reference_number": "",
        "kd_outbag": "BAG-1468-0002",
        "tanggal_outbag": "2019-11-07 00:00:00",
        "status_outbag": "1"
    }
 ],
 [
    {
        "id_service": "3",
        "reference_number": "",
        "kd_outbound": "OTB-1826-0001",
        "tgl_outbound": "2019-11-07 17:04:49",
        "status_otb": "1"
    }
 ],
]

это мой код

 public function awb_get() {
    $id = $this->get('tracking_number');
    $res= array(      
      $this->M_tarif->tampil_status_inbound($id),
      $this->M_tarif->tampil_status_otboundbag($id),
      $this->M_tarif->tampil_status_otboundori($id),
      $this->M_tarif->tampil_status_indes($id),
      $this->M_tarif->tampil_status_outdes($id),
      $this->M_tarif->tampil_status_runsheet($id),
      $this->M_tarif->tampil_db_service_status($id)
    );
    $this->response($res, 200);
}

я хочу вот так

{
"status": 200,
"error": false,
"awb": [
    {
        "tracking_number": "RJC-0000-0004",
        "status": "order",
        "tanggal": "2019-10-30"
    },
    {
        "tracking_number": "RJC-0000-0004",
        "status": "Inbound to origin",
        "tanggal": "2019-11-03"
    }
]
}

1 Ответ

0 голосов
/ 08 ноября 2019

Ваш ответ json неверен. Итак, сначала вы должны сбросить свой JSON перед отправкой в ​​функцию. Я сделал образец, чтобы переставить JSON и преобразовать его в объект stdClass. Пожалуйста, проверьте приведенный ниже код для преобразования с вашим ответом.

<code>$arr ='[
 [
    {
        "id_service": "3",
        "reference_number": "",
        "tracking_number": "RJC-0000-0001",
        "kd_inbound": "INB-1000-0001",
        "tgl_inbound": "2019-11-07 00:00:00",
        "status_inb": "1"
    }
 ],
 [
    {
        "id_service": "3",
        "reference_number": "",
        "kd_outbag": "BAG-1468-0002",
        "tanggal_outbag": "2019-11-07 00:00:00",
        "status_outbag": "1"
    }
 ],
 [
    {
        "id_service": "3",
        "reference_number": "",
        "kd_outbound": "OTB-1826-0001",
        "tgl_outbound": "2019-11-07 17:04:49",
        "status_otb": "1"
    }
 ],
]';

$result = str_replace(array('[',']','\n'), '',htmlspecialchars(json_encode($arr), ENT_NOQUOTES));
$str = preg_replace('/\\\"/',"\"", $result);

$json = '[';
$json .= substr($str, 2,-1); // Substring -1 character from the end of the json variable, this will be the trailing comma. 
$json .= ']';
$jsonData = preg_replace("/,(?!.*,)/", "", $json);

echo "<pre>";
print_r(json_decode($jsonData));
echo "
";

вывод:

Array
(
    [0] => stdClass Object
        (
            [id_service] => 3
            [reference_number] => 
            [tracking_number] => RJC-0000-0001
            [kd_inbound] => INB-1000-0001
            [tgl_inbound] => 2019-11-07 00:00:00
            [status_inb] => 1
        )

    [1] => stdClass Object
        (
            [id_service] => 3
            [reference_number] => 
            [kd_outbag] => BAG-1468-0002
            [tanggal_outbag] => 2019-11-07 00:00:00
            [status_outbag] => 1
        )

    [2] => stdClass Object
        (
            [id_service] => 3
            [reference_number] => 
            [kd_outbound] => OTB-1826-0001
            [tgl_outbound] => 2019-11-07 17:04:49
            [status_otb] => 1
        )

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...