#php #json
Вопрос:
Использование Php 7.2
Краткое изложение проекта.
- Я извлекаю файл json из Интернета в свой php-скрипт.
- Расшифруйте json.
- Отобразите информацию в таблице html.
Вот сценарий
<?php
$url_meta = "LINK_TO_json" ;
$data_meta = file_get_contents($url_meta);
$result_meta = json_decode($data_meta);
?>
<table id="data-armours-1" class="table table-striped table-bordered">
<thead>
<tr>
<th class="align-middle">test</th>
</tr>
</thead>
<tbody>
<?php
foreach($result_meta["Product"] as $key => $value)
{;?>
<tr>
<td class="align-middle"><?php echo $value["IsSuspended"];?></td>
<td class="align-middle"><?php echo $value["*****"];?></td>
<td class="align-middle"><?php echo $value["*****"];?></td>
<td class="align-middle"><?php echo $value["*****"];?></td>
<td class="align-middle"><?php echo $value["*****"];?></td>
<td class="align-middle"><?php echo $value["*****"];?></td>
.....
</tr>
<?php
}?>
</tbody>
</table>
Вар тупой для $result_meta
var_dump ($result_meta );
string(2957684) "
{"Product":[
{
"IsSuspended":false,
"IsBlocked":false,
"IsPublishedOnWeb":true,
"IsServiceItem":false,
"IsSpecialProduct":false,
"Brand":"BraND",
"ProductionOrigin":1,
"HasVariationParent":false,
"HasVariationChild":false,
"IsTaxExempt":false,
"IsDiscountable":true,
"ProductDimensions":{
"StockCode":"AB1010",
"Length":235.00,
"Height":160.00,
"Width":20.00,
"DimensionUnit":"mm",
"Mass":0.20,
"MassUnit":"Kg"
},
"TariffCode":"95030090",
"TariffDescription":"ABACUS",
"ProductDefaultCard":"",
"BarcodeType":"GTIN13",
"RetailPriceIncTax":*****,
"CustomerDiscount":*****,
"FriendlyTitle":"",
"PrintDescription":"",
"VariationMetaData":{
"StockParentId":-1,
"VariationFriendlyTitle":"",
"VariationFriendlyStockCode":"",
"OriginalStockCodeSuffixAndFootnote":""
},
"AttributeData":null,
"CompositeVariationFootnote":"",
"ExternalSiteWebURL":"",
"CustomerProductCode":null,
"TaxRate":0.150000,
"MaxDiscount":100.00,
"StockID":*****,
"StockCode":"*****",
"CustomerPrice":*****,
"CustomerTaxAmount":******,
"CustomerPriceWithTax":******,
"Description":"",
"ProductBarCode":"",
"FuturePrice":null,
"DetailedDescription":"
rn
Helps teach math skills
rn
rn
rn
",
"RetailPrice":,
"IntermediatePacks":[
{
"PackBarCode":"",
"PackQTY":,
"StockCode":""
},
{
"PackBarCode":"",
"PackQTY":100,
"StockCode":""
}
],
"AlternativeProducts":[],
"ProductImageLinks":[""],
"ProductDocumentLinks":null,
"KitItems":[],
"PromotionInfo":null,
"WarehouseStockLevels":[
{
"Amount":,
"StockCode":"",
"WarehouseCode":null,
"WarehouseDescription":""
}
],
"MainProductImageLink":"",
"TotalWarehouseStock":***,
"PublishingCategory":
{
"CategoryID":***,
"CategoryName":"****"
}
}
,{
"IsSuspended":false,
"IsBlocked":false,
"IsPublishedOnWeb":true,
"IsServiceItem":false,
"IsSpecialProduct":false,
"Brand":"BraND",
"ProductionOrigin":1,
"HasVariationParent":false,
"HasVariationChild":false,
"IsTaxExempt":false,
"IsDiscountable":true,
"ProductDimensions":{
"StockCode":"AB1010",
"Length":235.00,
"Height":160.00,
"Width":20.00,
"DimensionUnit":"mm",
"Mass":0.20,
"MassUnit":"Kg"
},
"TariffCode":"95030090",
"TariffDescription":"ABACUS",
"ProductDefaultCard":"",
"BarcodeType":"GTIN13",
"RetailPriceIncTax":*****,
"CustomerDiscount":*****,
"FriendlyTitle":"",
"PrintDescription":"",
"VariationMetaData":{
"StockParentId":-1,
"VariationFriendlyTitle":"",
"VariationFriendlyStockCode":"",
"OriginalStockCodeSuffixAndFootnote":""
},
"AttributeData":null,
"CompositeVariationFootnote":"",
"ExternalSiteWebURL":"",
"CustomerProductCode":null,
"TaxRate":0.150000,
"MaxDiscount":100.00,
"StockID":*****,
"StockCode":"*****",
"CustomerPrice":*****,
"CustomerTaxAmount":******,
"CustomerPriceWithTax":******,
"Description":"",
"ProductBarCode":"",
"FuturePrice":null,
"DetailedDescription":"
rn
Helps teach math skills
rn
rn
rn
",
"RetailPrice":,
"IntermediatePacks":[
{
"PackBarCode":"",
"PackQTY":,
"StockCode":""
},
{
"PackBarCode":"",
"PackQTY":100,
"StockCode":""
}
],
"AlternativeProducts":[],
"ProductImageLinks":[""],
"ProductDocumentLinks":null,
"KitItems":[],
"PromotionInfo":null,
"WarehouseStockLevels":[
{
"Amount":,
"StockCode":"",
"WarehouseCode":null,
"WarehouseDescription":""
}
],
"MainProductImageLink":"",
"TotalWarehouseStock":***,
"PublishingCategory":
{
"CategoryID":***,
"CategoryName":"****"
}
}
]}"
Проблема
Я получаю следующую ошибку PHP
Fatal error: Uncaught TypeError: Cannot access offset of type string on string in file/name/:linenumber Stack trace: #0 {main} thrown in file/name/:linenumber on line **
Желаемый результат
- Может ли кто-нибудь, пожалуйста, посоветовать, как я отображаю эти данные JSON в таблице html?
- Пожалуйста, обратите внимание, что не будут использоваться все данные.
- но вам также нужно будет знать, как использовать «Промежуточные пакеты»: [].
Спасибо
Комментарии:
1. Как выглядела $data_meta?
2. Если это код, вызывающий эту ошибку, то один из элементов в
$result_meta["Product"]
нем является не массивом, а строкой. Это предполагаетfile/name/:linenumber
, что часть сообщения об ошибке указывает на одну из строк, которая выводит a$value["*****"]
в вашемforeach
цикле.3. @rickdenhaan если вы посмотрите на var_dump, весь $result_meta-это одна большая строка. Я подозреваю, что исходные данные были дважды закодированы.
4. @ADyson Хорошая мысль, я предположил, что на самом деле это была свалка
$data_meta
. Если это$result_meta
так, то ваши подозрения, вероятно, верны.5. Да, это строка JSON с двойным кодированием. Внешние метки и все»», чтобы избежать внутренних, выдают это. Это нужно исправить, это не должно было быть сохранено таким образом. Пусть тот, кто его создал, разберется с этим.