Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve galera,
Estou iniciando no mundo WebService e já me deparo com o seguinte problema.
O Servidor da TOTVS via rest, me retorna exatamente da seguinte forma:
$resposta = enviaConteudoParaAPI($cabecalho, $conteudo, $url, $tpRequisicao);
print_r($resposta);
Resultado:
{"CAMPOS":"[\"\"A1_COD\",\"A1_NOME\",\"TIPO\"]","DADOS":"[[\"00932221\",\"PEDRO GONCALVES\",\"TITULAR\"][\"00164577\",\"JORGE ARAGAO\",\"TITULAR\"]]"}
//TRATADO
$array = json_decode($resposta, true);
$campos = $array['CAMPOS'];
$dados = $array['DADOS'];
print_r($array);
Resultado :
Array ( [CAMPOS] => [""A1_COD","A1_NOME","TIPO"] [DADOS] => [["00932221","PEDRO GONCALVES","TITULAR"]["00164577","JORGE ARAGAO","TITULAR"]] )
Acontece que preciso atribuir cada conteúdo a uma variável, ou seja, preciso trabalhar com cada valor de forma distinta:
$A1_COD = ['$A1_COD'];
$A1_NOME = ['A1_NOME'];
$TIPO = ['TIPO'];
echo "Codigo: $A1_COD, Nome: $A1_NOME, Tipo: $TIPO";
Onde eu preciso do seguinte resultado:
Codigo: 00932221 , Nome: PEDRO GONCALVES, Tipo: TITULAR
Codigo: 00164577 , Nome: JORGE ARAGAO, Tipo: TITULAR
Em outras palavras, preciso transformar este array:
Array ([["00932221","PEDRO GONÇALVES","TITULAR"]["00164577","JORGE ARAGAO","TITULAR"]])
Neste array:
Array ( [A1_COD] => 00932221 [A1_NOME] => PEDRO GONÇALVES [TIPO] => TITULAR )
Array ( [A1_COD] => 00164577 [A1_NOME] => JORGE ARAGAO [TIPO] => TITULAR )@EdCesar ,
Precisa mesmo, isso não atenderia?
foreach($dados as $valor) {
$valor[0] é o código
$valor[1] é o nome
$valor[2] é o tipo
}
Atenderia também, mas para as duas soluções apresentadas retorna um array vazio: array().
É normal vir do Json com essa estrutura apresentada? em toda pesquisa que fiz não vi nada parecido.
Sgue outro exemplo a ser tratado:
{"CAMPOS":"[\"\"A1_COD\",\"A1_NOME\",\"TIPO\"]","DADOS":"[[\"33436681\",\"MARCOS ALAN \",\"REPRESENTANTE\"][\"34007644\",\"MARCOS ALBERTO \",\"TITULAR\"][\"67762840\",\"MARCOS ALVES \",\"TITULAR\"][\"55178561\",\"MARCOS ANTONIO \",\"TITULAR\"][\"53105010\",\"MARCOS FERREIRA\",\"TITULAR\"][\"38908328\",\"MARCOS HIPOLITO \",\"TITULAR\"]]"}
@markhosbh, joia!
>
5 horas atrás, markhosbh disse:
É normal vir do Json com essa estrutura apresentada? em toda pesquisa que fiz não vi nada parecido.
A estrutura do json, depende do problema que você esta querendo resolver, o importante é que seja um json valido!
Veja só:
<?php
// Considerando que você tenha uma estrutura de json, valida!
$jsonString = '{
"CAMPOS": ["A1_COD", "A1_NOME", "TIPO"],
"DADOS": [
["33436681", "MARCOS ALAN", "REPRESENTANTE"],
["34007644", "MARCOS ALBERTO", "TITULAR"],
["67762840", "MARCOS ALVES", "TITULAR"],
["55178561", "MARCOS ANTONIO", "TITULAR"]
]
}';
$array = json_decode($jsonString, true);
$novoArray = [];
foreach ($array['DADOS'] as $dados) {
$novoArray[] = array_combine($array['CAMPOS'], $dados);
}
echo "<pre>";
print_r($novoArray);
Array
(
[0] => Array
(
[A1_COD] => 33436681
[A1_NOME] => MARCOS ALAN
[TIPO] => REPRESENTANTE
)
[1] => Array
(
[A1_COD] => 34007644
[A1_NOME] => MARCOS ALBERTO
[TIPO] => TITULAR
)
[2] => Array
(
[A1_COD] => 67762840
[A1_NOME] => MARCOS ALVES
[TIPO] => TITULAR
)
[3] => Array
(
[A1_COD] => 55178561
[A1_NOME] => MARCOS ANTONIO
[TIPO] => TITULAR
)
)
Se esse é o resultado que você precisa, então note que editei a string do json, para ser um json valido. Sendo assim, então você só precisa se certificar de que a função enviaConteudoParaAPI esta retornando um json valido.
Você pode utilizar algum serviço, como o [https://jsonlint.com/](https://jsonlint.com/) para validar o seu json@EdCesar, bom dia!
Cara, era isso mesmo, o retorno estava com aspas a mais por isso não consumia da forma correta.
Muito obrigado parceiro.
>
45 minutos atrás, markhosbh disse:
Acontece que preciso atribuir cada conteúdo a uma variável, ou seja, preciso trabalhar com cada valor de forma distinta:
Precisa mesmo, isso não atenderia?
>
49 minutos atrás, markhosbh disse:
Em outras palavras, preciso transformar este array:
Array ([["00932221","PEDRO GONÇALVES","TITULAR"]["00164577","JORGE ARAGAO","TITULAR"]])
Neste array: