Как я могу разобрать плохой JSON в PHP? - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь разобрать json ниже, но не могу, продолжаю получать пустой результат.

Вот этот json:

$response = '{"Status":1,"CodigoErro":null,"SKYException":"","ResultString":"{\"DadosBasicos\":{\"NomeCompleto\":null,\"Nome\":null,\"Sobrenome\":null,\"DataNascimento\":\"0001-01-01T00:00:00\",\"EstadoCivil\":null,\"Login\":\"xxxxxxxxxxxxx@yahoo.com.br\",\"Sexo\":0,\"CPF_CNPJ\":\"09414954775\",\"IdPerfilFaturamento\":null,\"IdConta\":\"13879034\",\"Assinaturas\":[{\"Id\":\"62606412\",\"ParentId\":null,\"Email\":\"xxxxxxxxxxxxx@yahoo.com.br\",\"DNA\":\"010000000001001000000010000000001000000000000000001000000010000000000001000000000000000010110001111101000000001000000001000000000111101000000100000101000001000011111111111110000000000000000000011000000010101011101111110100000000111110101101111100010000000000011011111111011010011011100011111111111101111111111111111111111111111111111101111111111110101111111111111011110100000011111111111111111111000\",\"StatusAssinatura\":1,\"ValorEmAberto\":null,\"CEP\":\"27540440\",\"TipoAssinatura\":0,\"ModoEntrega\":0,\"Produtos\":[],\"Equipamentos\":[],\"IlhaMaster\":false,\"Tier1\":true,\"PrincipalId\":\"062606412\",\"Enderecos\":null,\"Telefones\":null,\"TipoOrganizacao\":0,\"PassoRegua\":null,\"GeoCode\":\"BRL04100\",\"Fidelizado\":false,\"PossuiInteratividadePrePago\":false,\"PossuiSKYDigitalCortesia\":false,\"PossuiCanaisCortesiaLivre\":false,\"DataAtivacao\":\"2011-01-25T00:00:00\",\"DataFidelizacao\":\"2012-01-25T00:00:00\",\"TipoCliente\":\"F\",\"Segmento\":null,\"Pacote\":null,\"GloboCongelada\":[],\"ListaDeCanais\":[],\"CodigoTipoAssinatura\":null,\"CanceladoAteSeisMeses\":false,\"DataCancelamento\":null}]},\"DadosComplementares\":null}","Token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjcGZfY25waiI6IjA5NDE0OTU0Nzc1Iiwic2lnbmF0dXJlcyI6WyI2MjYwNjQxMiJdLCJpYXQiOjE1NDc5MTA4NDgsImV4cCI6MTU0Nzk5NzI0OH0.ho1V67cI4jZPXZ-DqnF-WzCRSKSY38uJuQs0tRXrdYM"}';

А вот что япытался сделать:

$json_bad = json_decode($response);
$json_002 = json_decode($json_bad->ResultString);

$email = $json_002->Login;

Однако, это не работает, я получаю пустую переменную.

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Ваша переменная $json_002 содержит многоуровневое значение DadosBasicos

Таким образом, вы можете получить к нему доступ двумя способами:

  1. Используя stdClass объект:

     $json_bad = json_decode($response);
     $json_002 = json_decode($json_bad->ResultString);
    
     $email = $json_002->DadosBasicos->Login;
    
  2. Использование массива:

     $json_bad = json_decode($response,true);
     $json_002 = json_decode($json_bad['ResultString'],true);
    
     $email = $json_002['DadosBasicos']['Login'];
    
0 голосов
/ 19 января 2019

Ваш недостающий 1 уровень во вторых JSON-декодированных данных ...

{"DadosBasicos":{"NomeCompl...

Таким образом, ваш адрес электронной почты на самом деле в

$email = $json_002->DadosBasicos->Login;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...