如果PHP中的名称包含点,则在php中获取json对象的值

时间:2015-06-02 05:38:38

标签: php json

我有一个类似以下的json

{"root":{
                "version":"1",
                "lastAlarmID":"123",
                "proUser":"1",
                "password":"asd123##",
                "syncDate":"22-12-2014",
                "hello.world":"something"
}
}

json_decode()之后,我可以获得除最后一个hello.world之外的所有值,因为它包含一个点。

$obj->root->hello.world无效。我在Javascript中获得了解决方案,但我想在php中使用解决方案。

4 个答案:

答案 0 :(得分:1)

$obj->root->{'hello.world'}将有效。

ps:$obj->root->{hello.world}可能不起作用。

b.t.w:为什么不使用Array? json_decode($json, true)将返回Array。然后$a['root']['hello.world']将始终有效。

答案 1 :(得分:0)

这是有效的

echo $test->root->{'hello.world'};

检查示例

<?php

$Data='{"root":{
                "version":"1",
                "lastAlarmID":"123",
                "proUser":"1",
                "password":"asd123##",
                "syncDate":"22-12-2014",
                "hello.world":"something"}
}';
$test=json_decode($Data);
print_r($test);
echo $test->root->{'hello.world'};
?>
  

输出

something

答案 2 :(得分:0)

您可以使用变量变量(http://php.net/manual/en/language.variables.variable.php):

$a = 'hello.world';
$obj->root->$a;

答案 3 :(得分:0)

这里有两个选项:

第一个选项:将对象转换为数组,并以这种方式访问​​属性,或将名称转换为安全名称:

<?php
$array = (array) $obj;
// access the value here
$value = $array['hello.world'];

// assign a safe refernce
$array[hello_world] = &$array['hello.world'];

第二个选项:使用引号和行李:

<?php
$value = $obj->root->{'hello.world'};