我有一个带有这样的字符串的JSON文件:
[{"Ean":"","Barcode":"010258100139","Bezeichnung":"Alia","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":129.90,"Vk":129.90}]
使用PHP我尝试将其放入数组中,以便获取数据:
$jsonarray = json_decode($jsonfile);
$jsonarray = json_decode(json_encode($jsonarray), true);
var_dump( $jsonarray );
我得到的是:
array (size=3)
0 =>
array (size=8)
'Ean' => string '' (length=0)
'Barcode' => string '010258100139' (length=12)
'Bezeichnung' => string 'Alia' (length=4)
'Bestaende' =>
array (size=1)
0 =>
array (size=5)
...
'Bestand' => int 1
'Dispo' => int 0
'Uvp' => float 129.9
'Vk' => float 129.9
就是这样!我从这里尝试了很多嵌套对象的例子。 如果我尝试获取像
这样的数据echo $jsonarray[0]['Barcode'];
我的条形码字符串没有问题。但是“数组(大小= 5)”中的数据我无法访问。 我尝试了很多东西,比如嵌套的foreach循环,这里的函数就像“object_to_array”,“json_encode2”等等。
任何人都可以给我一个如何获取它的提示吗?我试着得到“”Menge“:1”。
提前致谢。 Tyv
答案 0 :(得分:1)
你真的只需要一个json_decode
,就像这样:
$data = '[{"Ean":"","Barcode":"010258100139","Bezeichnung":"Alia","Bestaende":[{"Filiale":1,"FilialeBez":"Laden","Menge":1,"Gln":null,"Dispo":0}],"Bestand":1,"Dispo":0,"Uvp":129.90,"Vk":129.90}]';
$jsonarray = json_decode($data,true);
当你打印出来时,你会得到:
print_r($jsonarray);// I use print_r as its output looks more like how you use it
Array
(
[0] => Array
(
[Ean] =>
[Barcode] => 010258100139
[Bezeichnung] => Alia
[Bestaende] => Array
(
[0] => Array
(
[Filiale] => 1
[FilialeBez] => Laden
[Menge] => 1
[Gln] =>
[Dispo] => 0
)
)
[Bestand] => 1
[Dispo] => 0
[Uvp] => 129.9
[Vk] => 129.9
)
)
因此,从那里,您可以看到如何获得某些数据点。例如,你想要Bestaende的第一个数据数组,所以你可以把它当作:
$jsonarray['0']['Bestaende']['0']; // for the whole group
$jsonarray['0']['Bestaende']['0']['Menge']; // for specific items
如果你在Bestaende下有多个小组,那么你可以循环他们做你需要做的每个小组:
foreach($jsonarray['0']['Bestaende'] as $idx => $Bestaende) {
$Bestaende['Menge']; // to use that specific data of that group this loop
}