0

How to decode this string into normal PHP Array?

$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']);
  • There seems to be a problem with the `\\t` sequence in your inner JSON (appears twice). – Tom Udding May 23 '17 at 17:53
  • where does `$json['rezultatas']` come from? – jbe May 23 '17 at 18:02
  • I think @Tom is right, it's a parsing issue. Fwiw, json_decode() isn't perfect... Maybe something like this will help? https://stackoverflow.com/questions/1048487/phps-json-encode-does-not-escape-all-json-control-characters#3615890 – RoboBear May 23 '17 at 18:09
  • I fetch it from website with file gets content. I want convert it to standart array and do another action with php. –  May 23 '17 at 18:11
  • Now works for sure. Thanks! –  May 23 '17 at 18:17

1 Answers1

2

1) You decode the outer part of your JSON string but the inner part (rezultatas) also needs to be decoded.
2) It appears that the tab escape, \t, causes some problems while decoding your JSON.

You should strip the \t sequence in your JSON string before decoding:

<?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
?>

which outputs:

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
        )

)

Check for https://3v4l.org/kja5S the output.

Tom Udding
  • 2,264
  • 3
  • 20
  • 30