读取JSON的特定值

时间:2017-12-10 10:29:19

标签: php arrays json

{
    "success" : true,
    "message" : "",
    "result" : {
            "uuid" : "e606d53"
        }
}

我正在尝试阅读UUID

$obj = json_decode($execResult, true);
print_r($obj);
$UniID = $obj["result"]["uuid"];
echo $UniID;  ///result Blank

3 个答案:

答案 0 :(得分:0)

鉴于您在问题顶部包含的JSON作为输入,print_r语句将输出:

Array
(
    [success] => 1
    [message] => 
    [result] => Array
        (
            [uuid] => e606d53
        )

)

但你在评论中说:

  

输出与我之前发布的相同

我能解释这一点的唯一方法是,你的意思是你在问题顶部包含的JSON是print_r语句的结果。

这表明您的JSON是双重编码的。

即。有一个关联数组被编码为JSON文本。然后,该JSON文本被编码为JSON文本。

由于它被编码了两次,因此需要对其进行两次解码:

<?php

$execResult = '"{\n    \"success\" : true,\n    \"message\" : \"\",\n    \"result\" : {\n            \"uuid\" : \"e606d53\"\n        }\n}"';
print "Original JSON\n\n";
print_r($execResult);


$decode_1 = json_decode($execResult, true);
print "\n\nDecoded once\n\n";
print_r($decode_1);

$decode_2 = json_decode($decode_1, true);
print "\n\nDecoded twice\n\n";
print_r($decode_2);


print "\n\$decode_2[\"result\"][\"uuid\"]\n\n";
$UniID = $decode_2["result"]["uuid"];
echo $UniID;  ///result Blank

?>

哪个输出:

Original JSON

"{\n    \"success\" : true,\n    \"message\" : \"\",\n    \"result\" : {\n            \"uuid\" : \"e606d53\"\n        }\n}"

Decoded once

{
    "success" : true,
    "message" : "",
    "result" : {
            "uuid" : "e606d53"
        }
}

Decoded twice

Array
(
    [success] => 1
    [message] => 
    [result] => Array
        (
            [uuid] => e606d53
        )

)

$decode_2["result"]["uuid"]

e606d53

答案 1 :(得分:-1)

你可以尝试一下。它应该适用于您的代码。

$obj = json_decode($execResult); 
echo $obj->result->uuid;

答案 2 :(得分:-2)

这样可行。当您在php中解码json数据时,您很可能将其转换为object。为了知道数据类型,您可以使用var_dump函数CMIIW

$UniID = $obj->result->uuid;

编辑:嘿,我刚刚发现您的代码在here

中正常运行