我需要知道如何通过PHP阅读JSON,我不知道密钥的用途。这是一个我需要经历的json的例子,但是key->值对中没有一个总是相同的。其中一些关键名称拼写不同或名称末尾有数字,所以我需要能够让它们动态化。
以下是我将循环使用的JSON的确切示例
[
{
"var5":"item-company-1",
"asd2":"item-company-1",
"tie1":"0",
"cxs1":"481.891px",
"xcve2":"130.563px"
},...
我知道如果我知道密钥的确切名称,我会做类似的事情。
$someObject = json_decode($someJSON);
print_r($someObject); // Dump all data of the Object
echo $someObject[0]->name; // Access Object data
但是我不知道钥匙。我假设必须创建一个for循环来遍历每个对象,但我不知道如何在PHP中这样做。
答案 0 :(得分:2)
我假设你的json总是以下格式
$json = '[
{
"var5":"item-company-1",
"asd2":"item-company-1",
"tie1":"0",
"cxs1":"481.891px",
"xcve2":"130.563px"
},
{
"var6":"item-company-2",
"asd7":"item-company-2",
"tie8":"0",
"cxs9":"481.891px",
"xcve10":"130.563px",
"extra" : "unknown"
}
]';
然后,您可以将整个JSON
转换为数组并运行循环
$array = json_decode ($json ,true);
foreach ($array as $item) {
foreach($item as $key => $value) {
echo $value;
}
}
答案 1 :(得分:0)
我标记了答案,因为他在技术上回答了我的问题。
我也发现这个解决方案,希望它可以帮助将来作为上述的一个很好的替代品。这实际上将通过一个多级数组来获取所有值。
$jsonIterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator(json_decode($json, TRUE)),
RecursiveIteratorIterator::SELF_FIRST);
foreach ($jsonIterator as $key => $val) {
if(is_array($val)) {
echo "$key:\n";
} else {
echo "$key => $val\n";
}
}