Мне передают некоторые данные, которые не определены должным образом и могут быть изменены (или, по крайней мере, нет формальной спецификации, и свойства могут быть добавлены / удалены). У меня нет контроля над данными, которые я получаю как JSON, а затем json_decode
в анонимный объект.
В попытке разобраться в данных я хотел бы построить некоторые сопоставления. Предполагая, что данные определяют человека, что-то вроде:
$Data = json_decode($TheRawData);
$Mappings->Personal['Firstname']="FirstName";
$Mappings->Personal['Employer']="Employment->CurrentEmployer";
Что, если бы я делал это вручную, означало бы, что имя может быть найдено в $Data->FirstName
, а Текущий работодатель - в $Data->Employer->CurrentEmployer
Я бы хотел сохранить информацию для сопоставлений в базе данных для удобства сопровождения. К сожалению, когда я пытаюсь разобрать объект для определенных свойств, как показано ниже:
foreach($Mappings->Personal as $Key=>$Value) {
print $Key . ": " . $Data->{$Value};
}
Имя отлично работает (как и ожидалось), но ему не нравится селектор для второй записи, предположительно, потому что он охватывает несколько объектов и потребует повторных поисков.
Может кто-нибудь сказать мне, могу ли я как-то сопоставить произвольные местоположения в моем объекте?