无法使用对象从外部文件输出 JSON 数据
Can't output JSON Data from external file with an object
我对 JSON & PHP 的问题:
我尝试在我的网站上显示 JSON 值:
JSON内容
{
"promisArticle": [
{
"tradeItem": [
{
"hierarchyTradeItemGtin": [
{
"value": "04008400304014",
"quantity": 40
}
],
"identification": {
"productGroupConditionDe": "0816",
"gpcCategory": "10000045",
"isTradeItemABaseUnit": "true",
"isTradeItemAConsumerUnit": "true",
"isTradeItemADespatchUnit": "false",
"isTradeItemAnInvoiceUnit": "true",
"isTradeItemAnOrderableUnit": "true",
"unitDescriptor": "BASE_UNIT_OR_EACH",
"dangerousGoodsRegulation": "ZNA",
"effectiveDate": "2019-10-08T22:00:00Z",
"startAvailabilityDate": "2011-12-26T23:00:00Z",
"lastChangeDate": "2019-10-08T22:00:00Z",
"biocideRegulationCode": "NOT_APPLICABLE",
"quantityOfBaseUnits": 1,
"zasVersion": "ZAS7",
"baseUnitGtin": "00000040084015"
}
}
]
}
]
}
JSON 代码有效。
PHP代码
$filename = 'https://urltojson.json'
$content = file_get_contents($filename);
$data = json_decode($content);
foreach($data->promisArticle as $promisArticle)
{
echo 'My Output:' .$promisArticle->tradeItem->identification->baseUnitGtin .' !';
}
结果:
My Output: !
当我使用 print_r($data);
然后我得到这个:
stdClass Object ( [promisArticle] => Array ( [0] => stdClass Object ( [tradeItem] => Array ( [0] => stdClass Object ( [hierarchyTradeItemGtin] => Array ( [0] => stdClass Object ( [value] => 04008400304014 [quantity] => 40 ) ) [identification] => stdClass Object ( [productGroupConditionDe] => 0816 [gpcCategory] => 10000045 [isTradeItemABaseUnit] => true [isTradeItemAConsumerUnit] => true [isTradeItemADespatchUnit] => false [isTradeItemAnInvoiceUnit] => true [isTradeItemAnOrderableUnit] => true [unitDescriptor] => BASE_UNIT_OR_EACH [dangerousGoodsRegulation] => ZNA [effectiveDate] => 2019-10-08T22:00:00Z
[...]
不知道哪里出了问题
PHP 上的这个函数 json_decode 有一些参数,第二个参数指示 return 一个数组而不是一个对象,并且您正在将数据作为对象访问(->运算符),所以你需要在第二个参数上指明 false
$data = json_decode($content, false);
我对 JSON & PHP 的问题: 我尝试在我的网站上显示 JSON 值:
JSON内容
{
"promisArticle": [
{
"tradeItem": [
{
"hierarchyTradeItemGtin": [
{
"value": "04008400304014",
"quantity": 40
}
],
"identification": {
"productGroupConditionDe": "0816",
"gpcCategory": "10000045",
"isTradeItemABaseUnit": "true",
"isTradeItemAConsumerUnit": "true",
"isTradeItemADespatchUnit": "false",
"isTradeItemAnInvoiceUnit": "true",
"isTradeItemAnOrderableUnit": "true",
"unitDescriptor": "BASE_UNIT_OR_EACH",
"dangerousGoodsRegulation": "ZNA",
"effectiveDate": "2019-10-08T22:00:00Z",
"startAvailabilityDate": "2011-12-26T23:00:00Z",
"lastChangeDate": "2019-10-08T22:00:00Z",
"biocideRegulationCode": "NOT_APPLICABLE",
"quantityOfBaseUnits": 1,
"zasVersion": "ZAS7",
"baseUnitGtin": "00000040084015"
}
}
]
}
]
}
JSON 代码有效。
PHP代码
$filename = 'https://urltojson.json'
$content = file_get_contents($filename);
$data = json_decode($content);
foreach($data->promisArticle as $promisArticle)
{
echo 'My Output:' .$promisArticle->tradeItem->identification->baseUnitGtin .' !';
}
结果:
My Output: !
当我使用 print_r($data);
然后我得到这个:
stdClass Object ( [promisArticle] => Array ( [0] => stdClass Object ( [tradeItem] => Array ( [0] => stdClass Object ( [hierarchyTradeItemGtin] => Array ( [0] => stdClass Object ( [value] => 04008400304014 [quantity] => 40 ) ) [identification] => stdClass Object ( [productGroupConditionDe] => 0816 [gpcCategory] => 10000045 [isTradeItemABaseUnit] => true [isTradeItemAConsumerUnit] => true [isTradeItemADespatchUnit] => false [isTradeItemAnInvoiceUnit] => true [isTradeItemAnOrderableUnit] => true [unitDescriptor] => BASE_UNIT_OR_EACH [dangerousGoodsRegulation] => ZNA [effectiveDate] => 2019-10-08T22:00:00Z
[...]
不知道哪里出了问题
PHP 上的这个函数 json_decode 有一些参数,第二个参数指示 return 一个数组而不是一个对象,并且您正在将数据作为对象访问(->运算符),所以你需要在第二个参数上指明 false
$data = json_decode($content, false);