JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,是現(xiàn)今互聯(lián)網(wǎng)數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)之一。在PHP中,使用json_decode函數(shù)可以將JSON格式的數(shù)據(jù)解碼成PHP數(shù)組或?qū)ο蟆5牵绻鸍SON數(shù)據(jù)中嵌套了其他JSON數(shù)據(jù),那么如何進(jìn)行解析呢?本文將詳細(xì)地介紹如何解析嵌套JSON數(shù)據(jù)。
第一種嵌套情況是JSON數(shù)組中包含另一個(gè)JSON數(shù)組,示例如下:
$json = '[{ "id": 1, "name": "apple", "colors": ["red", "green", "yellow"] }, { "id": 2, "name": "banana", "colors": ["yellow", "brown"] }]'; $array = json_decode($json, true); foreach($array as $fruit){ echo "上述代碼將解析一個(gè)包含兩個(gè)水果的JSON數(shù)組,每個(gè)水果有一個(gè)name和一個(gè)colors屬性,其中colors又是一個(gè)JSON數(shù)組,包含不同顏色。在第一個(gè)foreach循環(huán)中,先輸出水果名稱,再在第二個(gè)foreach循環(huán)中逐個(gè)輸出水果顏色。輸出結(jié)果如下:".$fruit["name"]."的顏色有:
"; foreach($fruit["colors"] as $color){ echo "".$color."
"; } }
apple的顏色有:
red
green
yellow
banana的顏色有:
yellow
brown
第二種嵌套情況是JSON對(duì)象中包含另一個(gè)JSON對(duì)象,示例如下:$json = '{ "name": "John", "age": 30, "address": { "street": "Main Street", "city": "New York", "zip": "10001" } }'; $obj = json_decode($json); echo "上述代碼將解析一個(gè)包含一個(gè)人名、年齡和地址的JSON對(duì)象,其中地址又是一個(gè)JSON對(duì)象。可以通過(guò)$obj->屬性名來(lái)訪問(wèn)對(duì)象的屬性,例如$obj->name表示人名,$obj->address->street表示地址的街道。輸出結(jié)果如下:".$obj->name."的地址是:
"; echo "街道:".$obj->address->street."
"; echo "城市:".$obj->address->city."
"; echo "郵編:".$obj->address->zip."
";
John的地址是:
街道:Main Street
城市:New York
郵編:10001
最后,如果嵌套JSON數(shù)據(jù)更為復(fù)雜,可以采用遞歸的方式進(jìn)行解析。例如,一個(gè)JSON數(shù)組中包含若干JSON對(duì)象,其中每個(gè)對(duì)象又包含其他JSON數(shù)組或?qū)ο螅梢允褂眠f歸函數(shù)依次解析每個(gè)對(duì)象的屬性。具體實(shí)現(xiàn)略。