如何在php中转换数组中的json [英] how to convert json in array in php

查看:132
本文介绍了如何在php中转换数组中的json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚学过php,请帮忙 我有一个json 我不知道这个json是否有效,那我该如何将json启用到数组中呢?

I just learned php, please help i have a json I don't know if this json is valid or not, then how do I enable json to an array

"[{id_service\":\"3\",\"reference_number\":\"\",\"tracking_number\":\"RJC-0000-0001\",\"kd_inbound\":\"INB-1000-0001\",\"tgl_inbound\":\"2019-11-08 00:00:00\",\"status_inb\":\"1\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"kd_outbag\":\"BAG-1468-0001\",\"tanggal_outbag\":\"2019-11-08 00:00:00\",\"status_outbag\":\"1\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"kd_outbound\":\"OTB-1826-0001\",\"tgl_outbound\":\"2019-11-08 14:04:00\",\"status_otb\":\"1\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"tracking_number\":\"RJC-0000-0001\",\"kd_indes\":\"INB-DES-56730001\",\"tgl_indes\":\"2019-11-08 14:07:30\",\"status_indes\":\"1\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"tracking_number\":\"RJC-0000-0001\",\"tgl_status\":\"2019-11-07 17:06:43\",\"status\":\"Consignee Unknown\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"tracking_number\":\"RJC-0000-0001\",\"tgl_status\":\"2019-11-08 10:29:07\",\"status\":\"Closed\"}]"

如何将json转换为数组

how to convert json to array

这是我的代码

public function awb_get() {
    $id = $this->get('tracking_number');
    $arr= 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)
  );


    $result = str_replace(array('[',']','\n'), '',htmlspecialchars(json_encode($arr), ENT_NOQUOTES));
    $str = preg_replace("#(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|([\s\t]//.*)|(^//.*)#", '', $result);
    $json = '[';
    $json .= substr($str, 2,-1); 
    $json .= ']';
    $jsonData = preg_replace("/,(?!.*,)/", "", $json);
    $this->response($jsonData, 200);
}

如何正确替换json,这样输出

how to replace json properly so output like this

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字符串.因此只需解码两次.

This is just JSON encoded as a JSON string. So just decode it twice.

$data = '"[{\"id_service\":\"3\",\"reference_number\":\"\",\"tracking_number\":\"RJC-0000-0001\",\"kd_inbound\":\"INB-1000-0001\",\"tgl_inbound\":\"2019-11-08 00:00:00\",\"status_inb\":\"1\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"kd_outbag\":\"BAG-1468-0001\",\"tanggal_outbag\":\"2019-11-08 00:00:00\",\"status_outbag\":\"1\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"kd_outbound\":\"OTB-1826-0001\",\"tgl_outbound\":\"2019-11-08 14:04:00\",\"status_otb\":\"1\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"tracking_number\":\"RJC-0000-0001\",\"kd_indes\":\"INB-DES-56730001\",\"tgl_indes\":\"2019-11-08 14:07:30\",\"status_indes\":\"1\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"tracking_number\":\"RJC-0000-0001\",\"tgl_status\":\"2019-11-07 17:06:43\",\"status\":\"Consignee Unknown\"},{\"id_service\":\"3\",\"reference_number\":\"\",\"tracking_number\":\"RJC-0000-0001\",\"tgl_status\":\"2019-11-08 10:29:07\",\"status\":\"Closed\"}]"';
$json = json_decode($data);
$array = json_decode($json);
print_r($array);

这篇关于如何在php中转换数组中的json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆