Создать объект / модель из данных JSON, которая не является точной копией требуемого объекта-модели

Как в OOP-способе «гидрировать», «отобразить», «создать» (или как там это называется) представление объекта или модели этих данных JSON. Строка JSON, которую я включил ниже, представляет собой необработанные данные, полученные от Google AdWords API, и не является точной копией структуры, которую я хочу и нуждаюсь, и поэтому я могу не просто привести ее к объекту и тому подобному.

Я просматривал различные библиотеки картографирования и библиотеки гидратации, но не могу понять, как заставить его работать должным образом.

{
"report-name": {
"@name": "Criteria performance report #5b3e67189ac85",
},
"date-range": {
"@date": "Jun 5, 2018-Jul 4, 2018",
},
"table": {
"columns": {
"column": [
{
"@name": "adGroup",
"@display": "Ad group",
},
{
"@name": "impressions",
"@display": "Impressions",
},
{
"@name": "clicks",
"@display": "Clicks",
},
{
"@name": "cost",
"@display": "Cost",
}
]
},
"row": [
{
"@adGroup": "Ad Group 1 of Another Campaign",
"@impressions": 0,
"@clicks": 0,
"@cost": 0,
},
{
"@adGroup": "Ad group 1 of Initial Campaign",
"@impressions": 0,
"@clicks": 0,
"@cost": 0,
}
]
}
}

Я бы вообразил, что объект или модель выглядят примерно так.
Существуют разные типы отчетов, но структура выглядит одинаково, только элементы не содержат одинаковые атрибуты. Размещенная структура JSON представляет «Группу объявлений», что означает, что «строки» необходимо десериализовать в разные модели. По сути, вызов «getRowItems» должен был бы вернуть объекты AdGroup для опубликованного JSON, но может потребоваться вернуть другие типы объектов для различных типов данных отчета.

class ReportModelExample {

private $reportName;
private $reportDate;
private $reportItems;

public function getReportName()
{
return $this->reportName;
}

public function setReportName($reportName): void
{
$this->reportName = $reportName;
}

public function getReportDate()
{
return $this->reportDate;
}

public function setReportDate($reportDate): void
{
$this->reportDate = $reportDate;
}

public function getReportItems()
{
return $this->reportItems;
}

public function setReportItems($reportItems): void
{
$this->reportItems = $reportItems;
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector