如何将JSON放入PHP变量中?

3

我想把JSON信息放入PHP变量中,但是我一直收到错误。

以下是我的代码,用于使JSON可读:

header('Content-Type: application/json');
$jsondecode1 = json_decode($json1);
print_r ($jsondecode1);

这是关于$jsondecode1的代码片段:
Array
(
    [0] => stdClass Object
        (
            [flightId] => ******
            [******] => stdClass Object
                (
                    [******] => ******
                    [******] => ******
                    [******] => ******
                    [******] => ******
                    [******] => ******                
                )

注意:当我使用echo打印jsondecode1时,输出结果如下:

C:\xampp......\simpletest3.php的第48行出现了数组转换为字符串的错误提示

于是我使用了print_r()

我尝试将(例如)[flightId]放入PHP变量中:

$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1->flightId;
print_r ($jsondecode2);

输出:注意:在 C:.........\simpletest3.php 的第48行尝试获取非对象的属性'flightId'

我也尝试了一些其他代码,但输出都很相似,我不想让我的问题变得更复杂。 那么,我该如何将(例如)[flightId] 放入 PHP 变量中。

编辑:

解决方案:

$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1[0]->flightId;
print_r ($jsondecode2);

Or:

foreach ($jsondecode1 as $data) {
    print_r($data->flightId);
}
3个回答

2
您需要按照以下方式进行操作(您所展示的方式)。
$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1[0]->flightId;
echo $jsondecode2;

但是如果你有多维数组,可以按照以下方式操作:
$jsondecode1 = json_decode($json1);

foreach ($jsondecode1 as $jsondecode) {
    echo $jsondecode->flightId; // here you can use echo $flightId = $jsondecode->flightId; 
}

@duffbeerisgood 当你使用json_decode()函数时,它会将JSON字符串转换为对象数组。 - Alive to die - Anant
@duffbeerisgood 对于当前的情况,是的,因为您想要迭代JSON数据并尝试从中获取值。 - Alive to die - Anant

2

您的flightId在索引为0的数组中。因此,您首先需要访问该数组,然后才能获得flightId

请尝试以下代码:

$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1[0]->flightId;
print_r ($jsondecode2);

2
您的 JSON 包含一组对象,而不是一个对象。
$jsondecode1 = json_decode($json1);

// loop through all objects in the array
foreach ($jsondecode1 as $data) {
    print_r($data->flightId);
}

或者如果你只想获取数组的第一个对象:

$jsondecode1 = json_decode($json1);
$jsondecode2 = $jsondecode1[0]->flightId;
print_r ($jsondecode2);

但问题是为什么json是一个数组而不是单个对象呢?


此外,您不能简单地回显或打印非标量类型(如数组或对象),对于这种情况,您需要使用print_r


1
非常好的解决方案。谢谢! - Deadpool
我不知道为什么这个JSON是一个数组,我以为你们可以告诉我。 - Deadpool
@duffbeerisgood 这是你的输入,所以我无法告诉你为什么会这样 :) $json1 是一个包含类似 [{"flightId": "", ...}] 的字符串。那是一个对象数组。如果它只有 {"flightId": "", ...},没有 [ 和 ] 包围,那就是一个单独的 JSON 对象。 - Robert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接