Разобрать строку json, которая повреждена из-за символов Юникода и косых черт

Я пытаюсь получить данные с Android на Laravel с помощью API. Ниже приведены данные, которые я получил в списке массивов объектов формата.

$obj = '{ "registerDetails": "{"accountName":"hh h hc","accountNumber":"868686","addressUser":"cg h jc","bankId":1,"selectedCityId":1,"emergencyName":"g g h","emergencyNumber":"0686868","education":[{"certificatePicture":{"body":{},"headers":{"namesAndValues":["Content-Disposition","form-data; name\u003d\"certificateFile\"; filename\u003d\"2022-11-30-00-56-28-598.jpeg\""]}},"grade":"hxycucu","educationLvl":"STPM / A Level or Equivalent","endEducation":"Dec 2022","id":4,"institutionName":"yxyxyxy","isEducationExpandable":false,"startEducation":"Nov 2022"}],"skill":[{"id":8},{"id":10}],"work":[{"companyName":"cuvuv","jobEndDate":"Nov 2022","isCurrentlyWorkHere":true,"isJobExpand":true,"jobPosition":"g cuc","jobScope":"cuccu","jobTitle":"6ff7f","jobStartDate":"Oct 2022"}],"phoneUser":"906886","postCode":"058686","selectedStateId":1}", "myKadFile": {}, "selfieFile": {} }';

Я уже пытался расшифровать объект, но он вернул NULL.

Вот что я пробовал:

var_dump(json_decode($obj, true));

Я также пробую это.. json_decode(str_replace ('\"','"', $obj), true); все еще возвращает NULL

N.I.A 29.11.2022 16:45

также это $foo = utf8_encode($obj); $array = json_decode($foo, true);

N.I.A 29.11.2022 16:47

Даже этот ответ не делает строку json, содержащую юникод, действительной.

mickmackusa 30.11.2022 05:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Восстановление json методом проб и ошибок методом грубой силы во всей красе:

Проблема связана с этими надоедливыми символами юникода = (\u003d).

Мне нужно было заменить их и обработать косые черты.


...In case I need to clarify for anyone...

ЭТО ХАК!!!!

Код: (Демо)

$fixed = preg_replace('/\\\\u003d\\\\\\\\(.*?)\\\\\\\/', '=\\\\\\\\\\\\$1\\\\\\\\\\\\', $obj);

var_export(
    json_decode(json_decode($fixed)->registerDetails)
);

Вывод:

(object) array(
   'accountName' => 'gsyau',
   'accountNumber' => '168454',
   'addressUser' => 'test',
   'bankId' => 1,
   'selectedCityId' => 1,
   'emergencyName' => 'test',
   'emergencyNumber' => '0146542346',
   'education' => 
  array (
    0 => 
    (object) array(
       'certificatePicture' => 
      (object) array(
         'body' => 
        (object) array(
        ),
         'headers' => 
        (object) array(
           'namesAndValues' => 
          array (
            0 => 'Content-Disposition',
            1 => 'form-data; name = "certificateFile"; filename = "2022-11-29-21-18-35-294.jpg"',
          ),
        ),
      ),
       'grade' => 'test',
       'educationLvl' => 'Doctoral (PHD) or Equivalent',
       'endEducation' => 'Oct 2022',
       'id' => 8,
       'institutionName' => 'test',
       'isEducationExpandable' => false,
       'startEducation' => 'Aug 2022',
    ),
  ),
   'skill' => 
  array (
    0 => 
    (object) array(
       'id' => 7,
    ),
    1 => 
    (object) array(
       'id' => 9,
    ),
  ),
   'work' => 
  array (
    0 => 
    (object) array(
       'companyName' => 'test',
       'jobEndDate' => 'Oct 2022',
       'isCurrentlyWorkHere' => false,
       'isJobExpand' => false,
       'jobPosition' => 'testtest',
       'jobScope' => 'test',
       'jobTitle' => 'test',
       'jobStartDate' => 'Aug 2022',
    ),
  ),
   'phoneUser' => '014654264',
   'postCode' => '68100',
   'selectedStateId' => 1,
)

отлично, большое спасибо! Кстати, как получить доступ к значению «certificateFile» в разделе «Образование» -> «CertificatePicture»? Я установил значение true для json_decode(json_decode($fixed)->registerDetails, true); затем зацикливает образование, чтобы получить значение «certificateFile», но я понятия не имею

N.I.A 30.11.2022 07:54

Я бы проанализировал эти данные с помощью регулярного выражения или форматированного сканирования. 3v4l.org/NGRMb

mickmackusa 30.11.2022 08:42

Другие вопросы по теме