php json解码包含破折号的变量

Xsm*_*ael 5 php variables json

{"general":{
 "round-corner":"0",
 "border-stroke":"2",
 "background-color":"#ffffff"
 }
}
Run Code Online (Sandbox Code Playgroud)

我有这个json字符串,我知道php变量名不支持破折号.那么在这种情况下该怎么办?

Ran*_*gad 13

处理有效的json时,只要不使用extract(),就不需要做任何特殊的事情来在php中使用结果.

简而言之,让json_decode像Jay Bhatt建议的那样返回一个数组看起来更清晰,但你也可以自由地使用普通对象作为返回(这是stdclass的一个实例).

返回对象的属性几乎可以是任何东西.您只需要将属性名称用作php-string而不是硬编码的文字.

$obj->{'a sentence with spaces and umlauts äüö is valid here'}

<?php

$json = <<<JSON
{"general":{
 "round-corner":"0",
 "border-stroke":"2",
 "background-color äü??$%§":"#ffffff"
 }
}
JSON;

$obj = json_decode($json);

$keyName = "round-corner";
var_dump($obj->general->{'round-corner'});
var_dump($obj->general->$keyName);
var_dump($obj->general->{'background-color äü??$%§'});
Run Code Online (Sandbox Code Playgroud)

结果


Jay*_*att 5

您可以使用这样的数组格式.加密的钥匙将起作用.

<?php

$json = '{"general":{
 "round-corner":"0",
 "border-stroke":"2",
 "background-color":"#ffffff"
 }
}';

$array = json_decode($json, true);

echo $array['general']['border-stroke']; // prints 2

?>
Run Code Online (Sandbox Code Playgroud)

这是一个演示