【问题标题】:JSON decode (objects in object)JSON解码(对象中的对象)
【发布时间】:2017-05-23 17:43:24
【问题描述】:

如何将此字符串解码为普通的 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']);

【问题讨论】:

  • 您的内部 JSON 中的 \\t 序列似乎有问题(出现两次)。
  • $json['rezultatas'] 来自哪里?
  • 我认为@Tom 是对的,这是一个解析问题。 Fwiw, json_decode() 并不完美......也许这样的事情会有所帮助? stackoverflow.com/questions/1048487/…
  • 我从网站获取文件获取内容。我想将其转换为标准数组并使用 php 执行另一个操作。
  • 现在可以肯定了。谢谢!

标签: php json


【解决方案1】:

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 的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 2021-03-19
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2013-08-14
    • 1970-01-01
    相关资源
    最近更新 更多