【问题标题】:How parse JSON from file?如何从文件中解析 JSON?
【发布时间】:2018-04-07 12:25:41
【问题描述】:

我有这个代码的 json 文件:

{
  "data": [
    {
      "id": 33940157205526204,
      "user": {
        "id": 548844917,
        "full_name": "DelacruzHayden",
        "profile_picture": "https://scontent.cdninstagram.com/t51.2885-19/s150x150/87947328356424110_1657580247886246_102415570_a.jpg",
        "username": "Noreen Lang"
      },
      ...
  ]
}

当我想解析它时:

$data = file_get_contents("/home/lumawu/test.json");
        do {
            $medias = json_decode(json_encode($data),true);
            foreach ($medias['data'] as $media) {

我得到错误:

[ErrorException]              
Illegal string offset 'data' 

如何解码?

【问题讨论】:

  • 如果你的 $data 已经被 json 编码,你为什么要先对它进行 json_encode 编码?为什么不只使用json_decode($data, true)
  • @JérémyCasper 因为当我使用它时,我得到:为 foreach() 提供的参数无效
  • var_dump($data)(就在 file_get_content 之后)返回 NULL 或其他什么?如果为NULL,则输入的json无效。
  • @JérémyCasper 返回 JSON 文件,但是当我想使用 foreach() - 得到错误。
  • 和 var_dump($medias) ?也许您的数组的数据属性不是您认为的位置

标签: php json laravel


【解决方案1】:

在您的代码中,您只需执行 json_decode($data, true) 即可将 json 字符串放入数组中。

如果你同时做 json_decode(json_encode($data, true)), json_encode 将对 json 字符串进行编码,而下一个 json_decode 将无法正确解码 json。

所以你的代码应该是这样的:

$data = file_get_contents("/home/lumawu/test.json");
        do {
            $medias = json_decode($data,true);
            foreach ($medias['data'] as $media) {

【讨论】:

    猜你喜欢
    • 2014-03-20
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多