Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal...
To precisando de uma ajuda galera, to tendo retorno de uma API por um URL e ela me retornar o seguinte, abaixo um exemplo:
( [allDone] => 1 [starTime] => 2019-02-21T20:15:41.871318 [endTime] => 2019-02-21T20:15:45.58929 [executionResult] => Array ( [0] => stdClass Object ( [field] => busca_provider_spc_serasa_score [valid] => [observation] => {"Result":[{"MatchKeys":"doc{57279896049}","CreditData":[{"Origin":"SPC","QueryDate":"2019-02-21T00:00:00","BasicData":{"TaxIdNumber":"57279896049","TaxIdCountry":"Brazil","AlternativeIdNumbers":{"VoterRegistration":"6521890442"},"Name":"JANAIR LULA DA SILVA","Gender":"U","BirthDate":"1967-11-30T00:00:00","Age":51,"ZodiacSign":"SAGITARIO","MotherName":"MARIA LULA DA SILVA","TaxIdStatus":"","TaxIdOrigin":"SPC"},"PersonalRelationships":[{"RelatedEntityName":"MARIA LULA DA SILVA","RelationshipType":"MOTHER","RelationshipLevel":"DIRECT"}],"Emails":[],"Phones":[],"Addresses":[{"AddressMain":"R MONTEIO LOBATO","Number":"000107","Complement":"","Neighborhood":"","ZipCode":"95780000","City":"MONTENEGRO","State":"RS","Country":"Brazil"}],"TotalDebts":9217.06,"TotalCount":1,"TotalPreviousQueries":2,"PreviousQueries":[{"Origin":"SPC BRASIL - SAO PAULO / SP","QueryDate":"2019-02-21T00:00:00","Name":"BIG DATA SOLUCOES EM TECNOLOGIA","CityAndState":{"City":"RIO DE JANEIRO","State":"RJ"}},{"Origin":"SPC BRASIL - SAO PAULO / SP","QueryDate":"2019-02-16T00:00:00","Name":"BIG DATA SOLUCOES EM TECNOLOGIA","CityAndState":{"City":"RIO DE JANEIRO","State":"RJ"}}],"Occurrences":[{"Name":"PROTEST","TotalValue":9217.06,"TotalCount":1,"FirstOccurrenceDate":"0001-01-01T00:00:00","LastOccurrenceDate":"2019-01-09T00:00:00","AdditionalOutputData":{},"Details":[{"Origin":"","ExpiringDate":"0001-01-01T00:00:00","Date":"2019-01-09T00:00:00","Reason":"","Value":9217.06,"Count":1,"IssuingPeople":[],"IssuingCompanies":[{"TaxIdNumber":"","OfficialName":"UN","TradeName":"","Phones":[],"Addresses":[{"AddressMain":"","Number":"","Complement":"","Neighborhood":"","ZipCode":"","City":"MONTENEGRO","State":"RS","Country":"Brazil"}],"AdditionalOutputData":{"Contract":""}}],"AdditionalOutputData":{}}]}],"Score":{"Name":"SCORE 12 MONTHS","Class":"F","Horizon":"12","Probability":"0","Score":"0","ScoreType":"RESTRICTED","Reason":"O DOCUMENTO CONSULTADO APRESENTA REGISTRO(S) DE INADIMPLENCIA.","AdditionalOutputData":{}}}]}],"QueryId":"dcff3486-9efe-4628-a8f7-XXXXXXXXXXXX","ElapsedMilliseconds":3277.0,"Status":{"ondemand_credit_spc_score_12_months":[{"Code":0,"Message":"OK"}]}} [validationSource] => provider-spc-serasa-score [available] => 1 [similarity] => 0 ) ) [plds] => Array ( ) [approved] => [disaproveByRule] => [aditionalResponse] => Array ( ) )
Pessoal como visualizo "layoutizo" o retorno dessa API dentro do PHP?
se alguém puder me ajudar fico grato>
3 minutos atrás, Gabriel Heming disse:
O que você quer dizer com "layoutizar"? Nos de um exemplo.
Ola Gabriel... bom dia...
Cara "layoutizar" eu digo, deixar de forma apresentável o retorno da API na tela do usuário, deixar diagramado de forma que o usuário possa ler o que a API retornou...
Pessoal, acho que agora fica melhor... usei o codebeautify.org/jsonviewer e peguei um pedaço da "tree" para visualizar melhor
Esse seria o retorno que tive de uma API em Json... o problema é que não estou conseguindo carregar o resultado no PHP para poder ser visualizado de forma ordeira...
to tentando fazer assim mas não ta dando certo
<?php
// Atribui o conteúdo do arquivo para variável $arquivo
$arquivo = file_get_contents('result.json'); // Salvei o retorno do Json com o nome de result.json / 1ª Postagem ta o Json...
// Decodifica o formato JSON e retorna um Objeto
$json = json_decode($arquivo);
// Loop para percorrer o Objeto
foreach($json->result as $registro):
echo 'Origem: ' . $registro->Origin . '<br>';
echo 'Nome: ' . $registro->Name . '<br>';
echo 'Total de Débitos: ' . $registro->TotalDebts . '<br>';
echo 'País: ' . $registro->TaxIdCountry. '<br>';
endforeach;
Como São muitas as informações que tenho de buscar da API, eu não estou conseguindo se alguem puder me ajudar ou fazer um modelo para eu seguir ... bha... seria minha salvação
Desde ja AgradeçoOlá!
Me parece que os caminhos estão errados ou incompletos.
Deveria ser $json->Result->CreditData (perceba o Result maiúsculo).
Além disso CreditDebts está dentro de Addrress.
Qual é essa Api que você está usando? Achei interessante as informações que ela traz, para uma aplicação minha.
Abraço.
>
12 minutos atrás, Matheus Tavares disse:
Olá!
Me parece que os caminhos estão errados ou incompletos.
Deveria ser $json->Result->CreditData (perceba o Result maiúsculo).
Além disso CreditDebts está dentro de Addrress.
Qual é essa Api que você está usando? Achei interessante as informações que ela traz, para uma aplicação minha.
Abraço.
Oi Matheus, essa API é de retorno do SPC...
Poderia me dar um exemplo de como resolver isso " Além disso CreditDebts está dentro de Addrress. "
Olá.
A ideia é mais ou menos essa. Perceba que você tem que percorrer o caminho da chave que você quer acessar.
foreach($json->Result as $registro):
$Data = $registro->CreditData;
echo 'Origem: ' . $Data->BasicData->Origin . '<br>';
echo 'Nome: ' . $Data->BasicData->Name . '<br>';
echo 'Total de Débitos: ' . $Data->Address->TotalDebts . '<br>';
echo 'País: ' . $Data->BasicData->TaxIdCountry. '<br>';
endforeach;>
16 minutos atrás, Matheus Tavares disse:
Olá.
A ideia é mais ou menos essa. Perceba que você tem que percorrer o caminho da chave que você quer acessar.
foreach($json->Result as $registro):
$Data = $registro->CreditData;
echo 'Origem: ' . $Data->BasicData->Origin . '<br>';
echo 'Nome: ' . $Data->BasicData->Name . '<br>';
echo 'Total de Débitos: ' . $Data->Address->TotalDebts . '<br>';
echo 'País: ' . $Data->BasicData->TaxIdCountry. '<br>';
endforeach;
Matheus, pois é mas não to me acertando com esses caminhos... olha só eu achei outra idéia bem interessantes pois acho que com ela não preciso ficar listando cada registro... mas também tem o lance dos "caminhos"... se o amigo puder me ajudar ou outra pessoa fico grato:
Abaixo a API
{
"Result": [
{
"MatchKeys": "doc{57279000000}",
"CreditData": [
{
"Origin": "SPC",
"QueryDate": "2019-02-21T00:00:00",
"BasicData": {
"TaxIdNumber": "57279000000",
"TaxIdCountry": "Brazil",
"AlternativeIdNumbers": {
"VoterRegistration": "6521890442"
},
"Name": "JANAIR DOS ",
"Gender": "U",
"BirthDate": "1967-11-30T00:00:00",
"Age": 51,
"ZodiacSign": "SAGITARIO",
"MotherName": "MARIA TERES ",
"TaxIdStatus": "",
"TaxIdOrigin": "SPC"
},
"PersonalRelationships": [
{
"RelatedEntityName": "MARIA TERES",
"RelationshipType": "MOTHER",
"RelationshipLevel": "DIRECT"
}
],
"Emails": [],
"Phones": [],
"Addresses": [
{
"AddressMain": "R MONTEIO LOBATO",
"Number": "005477",
"Complement": "",
"Neighborhood": "",
"ZipCode": "95780000",
"City": "MONTENEGRO",
"State": "RS",
"Country": "Brazil"
}
],
"TotalDebts": 9217.06,
"TotalCount": 1,
"TotalPreviousQueries": 2,
"PreviousQueries": [
{
"Origin": "SPC BRASIL - SAO PAULO / SP",
"QueryDate": "2019-02-21T00:00:00",
"Name": "BIG DATA SOLUCOES EM TECNOLOGIA",
"CityAndState": {
"City": "RIO DE JANEIRO",
"State": "RJ"
}
},
{
"Origin": "SPC BRASIL - SAO PAULO / SP",
"QueryDate": "2019-02-16T00:00:00",
"Name": "BIG DATA SOLUCOES EM TECNOLOGIA",
"CityAndState": {
"City": "RIO DE JANEIRO",
"State": "RJ"
}
}
],
"Occurrences": [
{
"Name": "PROTEST",
"TotalValue": 9217.06,
"TotalCount": 1,
"FirstOccurrenceDate": "0001-01-01T00:00:00",
"LastOccurrenceDate": "2019-01-09T00:00:00",
"AdditionalOutputData": {},
"Details": [
{
"Origin": "",
"ExpiringDate": "0001-01-01T00:00:00",
"Date": "2019-01-09T00:00:00",
"Reason": "",
"Value": 9217.06,
"Count": 1,
"IssuingPeople": [],
"IssuingCompanies": [
{
"TaxIdNumber": "",
"OfficialName": "UN",
"TradeName": "",
"Phones": [],
"Addresses": [
{
"AddressMain": "",
"Number": "",
"Complement": "",
"Neighborhood": "",
"ZipCode": "",
"City": "MONTENEGRO",
"State": "RS",
"Country": "Brazil"
}
],
"AdditionalOutputData": {
"Contract": ""
}
}
],
"AdditionalOutputData": {}
}
]
}
],
"Score": {
"Name": "SCORE 12 MONTHS",
"Class": "F",
"Horizon": "12",
"Probability": "0",
"Score": "0",
"ScoreType": "RESTRICTED",
"Reason": "O DOCUMENTO CONSULTADO APRESENTA REGISTRO(S) DE INADIMPLENCIA.",
"AdditionalOutputData": {}
}
}
]
}
],
"QueryId": "dcff3486-9efe-4628-a8f7-dsfdsf4654fds",
"ElapsedMilliseconds": 3277,
"Status": {
"ondemand_credit_spc_score_12_months": [
{
"Code": 0,
"Message": "OK"
}
]
}
}
agora o o PHP para interpretar o retorno da API / Json
<?php
//a opção true vai forçar o retorno da função como array associativo.
$conteudo = json_decode(file_get_contents('resultado.json'), true);
foreach($conteudo as $chave => $registro)
$Data = $registro->CreditData; $Origin = isset($registro['BasicData']) ? $registro['BasicData'] : [];
$PersonalRelationships = isset($registro['PersonalRelationships']) ? $registro['PersonalRelationships'] : [];
$IssuingCompanies = isset($registro['IssuingCompanies']) ? $registro['IssuingCompanies'] : [];
$Addresses = isset($registro['IssuingCompanies']['Addresses']) ? $registro['IssuingCompanies']['Addresses'] : [];
/*******************Exibição generica*******************************/
exibir('BasicData', $Origin);
exibir('PersonalRelationships', $PersonalRelationships);
exibir('IssuingCompanies', $IssuingCompanies);
exibir('Addresses', $Addresses);
}
function exibir($titulo, $registro){
echo '<br><br>' . $titulo;
foreach($registro as $chave => $registro){
if(is_array($registro)){
foreach($registro as $chave => $valor){
echo '<br>' . $chave . ' : ' . $valor;
}
}else{
echo '<br>' . $chave . ' : ' . $registro;
}
}
}
Ou seja... eu acho que to errando no "caminho da chave" ... cara não to conseguindo mesmo ja tentei de tudo ...
A ideia aqui é que quando ele carregar o localizar "Addresses" ele mostre tudo o que esta abaixo dele
"AddressMain": "R MONTEIO LOBATO",
"Number": "000107",
"Complement": "",
"Neighborhood": "",
"ZipCode": "95780000",
"City": "MONTENEGRO",
"State": "RS",
"Country": "Brazil"
ou seja... o bixo ta pegando nesse bendito caminho...Bom, também se alguém tem alguma outra alternativa ou dica de como transformar esse retorno WebService em uma tabela HTML eu agradeço... tem uma coisa... os array não são fixo, alguns retornos pode vir mais ou menos informações.
Se alguém puder me ajudar com o PHP acima ou tiver alguma outra dica, fico muito grato a comunidade
Amigo, você precisa estudar esses tipos do PHP: Array e Objeto.
Quando abre chaves "{" é um objeto, então você deve utilizar a flechinha para acessá-lo "->".
Quando abre colchetes "[" é um array, então você deve verificar se esse array possui chave ou se ela está implícita (não aparece), pois se não aparecer (que é o caso em todos os arrays presentes no seu exemplo), significa que está em ordem numérica (0, 1, 2, 3, 4...).
Certo, entendido isso, vamos passo-a-passo:
{ ----> abre um objeto
"Result": [ -> a chave "Result" aponta para um array
{ -> A primeira chave desse array está implicita, então 0. Esta chave aponta para um objeto
"MatchKeys": "doc{57279000000}",
.......
Se tudo isso estiver dentro de uma variável chamada $dados, você acessaria a informação acima dessa forma:
echo $dados->Result[ 0 ]->MatchKeys;
Beleza? Basta seguir os passos explicados acima.
O foreach serve para você fazer uma iteração / loop em um conjunto de dados. Sempre que você tem um array e quer exibir todos os valores dentro dele, você pode usar o foreach.
O exemplo que eu postei no meu post anterior estava apenas complementando o que você já tinha desenvolvido, mas não acho que você precise do foreach aqui, pois pelo que percebo trata-se de apenas uma consulta individual (e não um conjunto). Caso você queira processar várias consultas, basta usar o foreach.
Outro exemplo:
{
"Result": [
{
"CreditData": [
{
"BasicData": {
"TaxIdNumber": "57279000000",
echo $dados->Result[ 0 ]->CreditData[ 0 ]->BasicData->TaxIdNumber;
Matheus, o brigado pela dica... entendi a lógica do Array.
Só mai uma pergunta, não abusando ja abusando... como expresso essa array nessa função abaixo, ou seja, como faço para visualizar o "TaxIdNumber": "57279000000"
Array:
echo $dados->Result[ 0 ]->CreditData[ 0 ]->BasicData;
-------------------------------------------------------------------------------------------------------------------------------------------------
{
"Result": [
{
"MatchKeys": "doc{57279896049}",
"CreditData": [
{
"Origin": "SPC",
"QueryDate": "2019-02-21T00:00:00",
"BasicData": {
** "TaxIdNumber": "57279896049", ( exibir esses resultados no PHP )
"TaxIdCountry": "Brazil", ( exibir esses resultados no PHP )**
...
...
...
<?php
//a opção true vai forçar o retorno da função como array associativo.
$conteudo = json_decode(file_get_contents('json.json'), true);
foreach($conteudo as $chave => $registro) $Origin = isset($registro['BasicData']) ? $registro['BasicData'] : [];
/*******************Exibição generica*******************************/
exibir('BasicData', $BasicData);
}
function exibir($titulo, $registro){
echo '<br><br>' . $titulo;
foreach($registro as $chave => $registro){
if(is_array($registro)){
foreach($registro as $chave => $valor){
echo '<br>' . $chave . ' : ' . $valor;
}
}else{
echo '<br>' . $chave . ' : ' . $registro;
}
}
}
O que você quer dizer com "layoutizar"? Nos de um exemplo.