PHPを使用して、「単位」および「値」を読み込もうとしています。ただし、一部のJSON要素(「local/sysbench-cpu-1.0.0」、「m4.4xlarge-4.4.0-66-generic」)は、各JSONで同じではない場合があります。私はむしろ、特定の文字列を要素にアクセスするために正規表現や配列のインデックスを使用する理由は次のとおりです。PHPで正規表現または配列インデックスを使用してJSON要素にアクセスする方法
{
"title": "cputests-sysbench-cpu-100-m4-4xlarge-20170328",
"results": {
"local\/sysbench-cpu-1.0.0": {
"arguments": "cpu performance benchmark",
"units": "seconds",
"results": {
"m4.4xlarge-4.4.0-66-generic": {
"value": "53.2386"
}
}
},
"": {
"arguments": "Memory Usage Monitor",
"units": "Megabytes",
"results": {
"m4.4xlarge-4.4.0-66-generic": {
"value": "1355,1356,1357,1357,1358,1359,1358,1359,1359,1358,1357,1358,1369,1370,1374,1373,1374,1376,1370,1362,1359,1360,1358,1358,1357,1358,1360,1360,1359,1359,1362,1362,1362,1363,1362,1363,1366,1365,1369,1366,1365,1363,1362,1363,1362,1363,1363,1363,1368,1374,1373,1372,1372,1373"
}
}
}
}
}
私は正規表現や配列のインデックスを使用しない場合は、PHPスクリプトは動作します:
<?php
$string = file_get_contents("result.json"); <br>
$data = json_decode($string); <br>
//$data = json_decode($string, true);
//var_dump(json_decode($string)); <br>
print $data->{'results'}->{**'local/sysbench-cpu-1.0.0'**}->units; <br>
print "\n";<br>
print $data->{'results'}->{'local/sysbench-cpu-1.0.0'}->{'results'}->{'**m4.4xlarge-4.4.0-66-generic**'}->value; <br>
// print $data['results']['local/sysbench-cpu-1.0.0']['units']; <br>
// print "\n"; <br>
// print $data['results']['local/sysbench-cpu-1.0.0']['results']['m4.4xlarge-4.4.0-66-generic']['value']; <br>
?>
json_decode($string, true)
を使用しているときに、文字列または配列インデックスの代わりに正規表現を使用しようとすると失敗します。
なぜ正規表現を使用しますか? 'json_decode'が完璧にうまく動作すれば。 – Vallentin