将 json 数据存储到 php 变量

Store json data to php variable

我正在尝试将数据从 json 文件存储到 php 变量。但是当我尝试回显变量供以后使用时它不会工作。

这是我的 json 文件:

"[{\"channelId\":150342342,\"channelName\":\"example.no\",\"channelUrl\":\"http:\/\/www.example.no\"},{\"channelId\":1529564329,\"channelName\":\"example2.no\",\"channelUrl\":\"http:\/\/www.example2.no\"},{\"channelId\":1536534822,\"channelName\":\"example3.no\",\"channelUrl\":\"http:\/\/www.example3.no\"}]"

这是我的代码:

<?php
require_once('config.php');

$channeljson = file_get_contents('channels.json');

$data = json_decode($channeljson, true);

$channelid = $data['channelId'];
$channelname = $data['channelName'];
$channelurl = $data['channelUrl'];

我也尝试过很多其他方法..
有人有任何有用的提示吗?

您的文件包含一个代表字符串的 json,因为它以 " 字符开始和结束。另一个问题是转义字符 \.

如果您不想更改写入 json 文件的例程,您可以通过更正无效的 json:

来解决您的问题
$data = json_decode(trim(stripslashes($channeljson), '"'), true); // Removes the escape and the enclosing " characters

还有一个问题:json 表示一个对象数组(数组,因为您将 true 传递给第二个 json_decode 函数)并且您正在尝试访问 $data像一个常规数组。

查看 $data 内容:

array(3) {
  [0]=>
  array(3) {
    ["channelId"]=>
    int(150342342)
    ["channelName"]=>
    string(10) "example.no"
    ["channelUrl"]=>
    string(21) "http://www.example.no"
  }
  [1]=>
  array(3) {
    ["channelId"]=>
    int(1529564329)
    ["channelName"]=>
    string(11) "example2.no"
    ["channelUrl"]=>
    string(22) "http://www.example2.no"
  }
  [2]=>
  array(3) {
    ["channelId"]=>
    int(1536534822)
    ["channelName"]=>
    string(11) "example3.no"
    ["channelUrl"]=>
    string(22) "http://www.example3.no"
  }
}