我有一个类似以下的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中使用解决方案。
答案 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'};