【问题标题】:convert json to object php将json转换为对象php
【发布时间】:2019-11-08 04:03:48
【问题描述】:

我刚学过php

我有一个单独的数据库表,我想将该表与只有 1 个参数的 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"
    }
]
}

【问题讨论】:

  • 您必须使用 json_decode() 将其转换为数组,而不是使用 forloop
  • 谢谢,能举个例子吗?
  • 你的问题有点不清楚,你要结合什么表?
  • 您的 JSON 输出无效Jsonlint
  • 有没有办法让json输出正确?

标签: php json codeigniter


【解决方案1】:

您的 json 响应不正确。 因此,首先您必须在发送功能之前重置您的 JSON。我正在制作样本以重新排列 JSON 并将其转换为 stdClass 对象。请检查以下代码以转换为您的响应。

$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 "</pre>";

输出:

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
        )

)

【讨论】:

  • 在这里,我只是以正确的格式向您隐蔽了 json 响应。使用与演示 json 数组相同的代码。
  • $arr 数组变量中有什么?和你在 json 响应中提到的一样吗?
猜你喜欢
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多