JSON解码(对象中的对象)

时间:2017-05-23 17:43:24

标签: php json

如何将此字符串解码为普通的PHP数组?

$json ='{
    "rezultatas": "[\r\n    {\r\n        \"laikas\": \"2017-06-15 09:40:00\",\r\n        \"komentaras\": \"pirminė konsultacija sergantiems diabetu (turėti gliukomatį ir dienyną)\\t\",\r\n        \"savaitesDiena\": 5,\r\n        \"id\": 47293965,\r\n        \"kabinetas\": \"147\",\r\n        \"istPavadinimas\": \"Lietuvos sveikatos mokslų universiteto ligoninė Kauno klinikos\",\r\n        \"specialybe\": \"ENDOKRINOLOGAS\",\r\n        \"gydytojas\": \"STASIŪNAS TADAS\",\r\n        \"pareigybe\": \"GYDYTOJAS ENDOKRINOLOGAS\",\r\n        \"kabPav\": \"Endokrinologijos ambulatorija\",\r\n        \"redaguoja\": 0\r\n    },\r\n    {\r\n        \"laikas\": \"2017-06-22 09:20:00\",\r\n        \"komentaras\": \"pirminė konsultacija,sergantiems diabetu (turėti gliukomatį ir dienyną)\",\r\n        \"savaitesDiena\": 5,\r\n        \"id\": 47293968,\r\n        \"kabinetas\": \"147\",\r\n        \"istPavadinimas\": \"Lietuvos sveikatos mokslų universiteto ligoninė Kauno klinikos\",\r\n        \"specialybe\": \"ENDOKRINOLOGAS\",\r\n        \"gydytojas\": \"STASIŪNAS TADAS\",\r\n        \"pareigybe\": \"GYDYTOJAS ENDOKRINOLOGAS\",\r\n        \"kabPav\": \"Endokrinologijos ambulatorija\",\r\n        \"redaguoja\": 0\r\n    },\r\n    {\r\n        \"laikas\": \"2017-06-22 09:40:00\",\r\n        \"komentaras\": \"pirminė konsultacija sergantiems diabetu (turėti gliukomatį ir dienyną)\\t\",\r\n        \"savaitesDiena\": 5,\r\n        \"id\": 47293969,\r\n        \"kabinetas\": \"147\",\r\n        \"istPavadinimas\": \"Lietuvos sveikatos mokslų universiteto ligoninė Kauno klinikos\",\r\n        \"specialybe\": \"ENDOKRINOLOGAS\",\r\n        \"gydytojas\": \"STASIŪNAS TADAS\",\r\n        \"pareigybe\": \"GYDYTOJAS ENDOKRINOLOGAS\",\r\n        \"kabPav\": \"Endokrinologijos ambulatorija\",\r\n        \"redaguoja\": 0\r\n    }\r\n]",
    "klaida": null
}';

$result = json_decode($json, true);

print_r($result['rezultatas']);

1 个答案:

答案 0 :(得分:2)

1)您解码JSON字符串的外部部分,但内部部分(rezultatas)也需要解码。
2)似乎选项卡转义符\t在解码JSON时会导致一些问题。

您应该在解码前删除JSON字符串中的\t序列:

<?php
$json ='{
    "rezultatas": "[\r\n    {\r\n        \"laikas\": \"2017-06-15 09:40:00\",\r\n        \"komentaras\": \"pirminė konsultacija sergantiems diabetu (turėti gliukomatį ir dienyną)\\t\",\r\n        \"savaitesDiena\": 5,\r\n        \"id\": 47293965,\r\n        \"kabinetas\": \"147\",\r\n        \"istPavadinimas\": \"Lietuvos sveikatos mokslų universiteto ligoninė Kauno klinikos\",\r\n        \"specialybe\": \"ENDOKRINOLOGAS\",\r\n        \"gydytojas\": \"STASIŪNAS TADAS\",\r\n        \"pareigybe\": \"GYDYTOJAS ENDOKRINOLOGAS\",\r\n        \"kabPav\": \"Endokrinologijos ambulatorija\",\r\n        \"redaguoja\": 0\r\n    },\r\n    {\r\n        \"laikas\": \"2017-06-22 09:20:00\",\r\n        \"komentaras\": \"pirminė konsultacija,sergantiems diabetu (turėti gliukomatį ir dienyną)\",\r\n        \"savaitesDiena\": 5,\r\n        \"id\": 47293968,\r\n        \"kabinetas\": \"147\",\r\n        \"istPavadinimas\": \"Lietuvos sveikatos mokslų universiteto ligoninė Kauno klinikos\",\r\n        \"specialybe\": \"ENDOKRINOLOGAS\",\r\n        \"gydytojas\": \"STASIŪNAS TADAS\",\r\n        \"pareigybe\": \"GYDYTOJAS ENDOKRINOLOGAS\",\r\n        \"kabPav\": \"Endokrinologijos ambulatorija\",\r\n        \"redaguoja\": 0\r\n    },\r\n    {\r\n        \"laikas\": \"2017-06-22 09:40:00\",\r\n        \"komentaras\": \"pirminė konsultacija sergantiems diabetu (turėti gliukomatį ir dienyną)\\t\",\r\n        \"savaitesDiena\": 5,\r\n        \"id\": 47293969,\r\n        \"kabinetas\": \"147\",\r\n        \"istPavadinimas\": \"Lietuvos sveikatos mokslų universiteto ligoninė Kauno klinikos\",\r\n        \"specialybe\": \"ENDOKRINOLOGAS\",\r\n        \"gydytojas\": \"STASIŪNAS TADAS\",\r\n        \"pareigybe\": \"GYDYTOJAS ENDOKRINOLOGAS\",\r\n        \"kabPav\": \"Endokrinologijos ambulatorija\",\r\n        \"redaguoja\": 0\r\n    }\r\n]",
    "klaida": null
}';

$json = str_replace('\t', '', $json); // strip '\t' from your JSON
$result = json_decode($json, true); // decode outer part

print_r(json_decode($result['rezultatas'],true)); // decode inner part
?>

输出:

Array
(
    [0] => Array
        (
            [laikas] => 2017-06-15 09:40:00
            [komentaras] => pirminė konsultacija sergantiems diabetu (turėti gliukomatį ir dienyną)
            [savaitesDiena] => 5
            [id] => 47293965
            [kabinetas] => 147
            [istPavadinimas] => Lietuvos sveikatos mokslų universiteto ligoninė Kauno klinikos
            [specialybe] => ENDOKRINOLOGAS
            [gydytojas] => STASIŪNAS TADAS
            [pareigybe] => GYDYTOJAS ENDOKRINOLOGAS
            [kabPav] => Endokrinologijos ambulatorija
            [redaguoja] => 0
        )

    [1] => Array
        (
            [laikas] => 2017-06-22 09:20:00
            [komentaras] => pirminė konsultacija,sergantiems diabetu (turėti gliukomatį ir dienyną)
            [savaitesDiena] => 5
            [id] => 47293968
            [kabinetas] => 147
            [istPavadinimas] => Lietuvos sveikatos mokslų universiteto ligoninė Kauno klinikos
            [specialybe] => ENDOKRINOLOGAS
            [gydytojas] => STASIŪNAS TADAS
            [pareigybe] => GYDYTOJAS ENDOKRINOLOGAS
            [kabPav] => Endokrinologijos ambulatorija
            [redaguoja] => 0
        )

    [2] => Array
        (
            [laikas] => 2017-06-22 09:40:00
            [komentaras] => pirminė konsultacija sergantiems diabetu (turėti gliukomatį ir dienyną)
            [savaitesDiena] => 5
            [id] => 47293969
            [kabinetas] => 147
            [istPavadinimas] => Lietuvos sveikatos mokslų universiteto ligoninė Kauno klinikos
            [specialybe] => ENDOKRINOLOGAS
            [gydytojas] => STASIŪNAS TADAS
            [pareigybe] => GYDYTOJAS ENDOKRINOLOGAS
            [kabPav] => Endokrinologijos ambulatorija
            [redaguoja] => 0
        )

)

检查https://3v4l.org/kja5S输出。