2017-08-26 2 views
1

J'ai la réponse JSON suivante que je reçois d'une APIImpossible de convertir tableau de tableaux à tableau d'objets sans index dans Laravel

[ 
    [ 
    {"companyID":"U72200TG2005PTC045191","companyName":"OPEN TEXT TECHNOLOGIES INDIA PRIVATE LIMITED"}, 
    {"companyID":"U51909HR2002PTC034956","companyName":"OPEN WAYS MARKETING PRIVATE LIMITED"}, 
    {"companyID":"U00892HR2005PTC035863","companyName":"OPEN HOUSE DIGITAL MEDIA PRIVATE LIMITED"}, 
    {"companyID":"U00804KA1999PTC024813","companyName":"OPEN LEAF STOCKS AND SHARES PRIVATE LIMITED"}, 
    {"companyID":"U72300KA2000PTC026648","companyName":"OPEN STREAM TECHNOLOGIES (INDIA) PRIVATE LIMITED"}, 
    {"companyID":"U72200KA2003PTC032219","companyName":"OPENCLOVIS SOLUTIONS PRIVATE LIMITED"}, 
    {"companyID":"U72200KA2003PTC032083","companyName":"OPEN-SILICON RESEARCH PRIVATE LIMITED"}, 
    {"companyID":"U72900KA2003PTC033042","companyName":"OPENGEAR NETWORKS PRIVATE LIMITED"}, 
    {"companyID":"U72200DL2005PTC170412","companyName":"OPEN SOLUTIONS SOFTWARE SERVICES PRIVATE LIMITED"}, 
    {"companyID":"U72112MP1985PTC002837","companyName":"OPEN END SPINNERS PVT LTD"} 
    ] 
] 

Je veux le convertir en un tableau correct des objets

[ 
{"companyID":"U72200TG2005PTC045191","companyName":"OPEN TEXT TECHNOLOGIES INDIA PRIVATE LIMITED"}, 
{"companyID":"U51909HR2002PTC034956","companyName":"OPEN WAYS MARKETING PRIVATE LIMITED"}, 
{"companyID":"U00892HR2005PTC035863","companyName":"OPEN HOUSE DIGITAL MEDIA PRIVATE LIMITED"} 
] 

Mais je ne suis pas capable d'atteindre cet

ce sont les codes que j'ai essayé

$data = json_decode($result,true); 

$new_array = array(); 
foreach ($data[0] as $to_obj) 
{ 
    new_array[] = (object)$to_obj; 
} 

return ($new_array); 

$ result est le JSON qui provient de l'API. Quand je l'ai fait l'new_array de $ retourné

array:10 [ 
    0 => {#546 
    +"companyID": "U72200TG2005PTC045191" 
    +"companyName": "OPEN TEXT TECHNOLOGIES INDIA PRIVATE LIMITED" 
    } 
    1 => {#576 
    +"companyID": "U51909HR2002PTC034956" 
    +"companyName": "OPEN WAYS MARKETING PRIVATE LIMITED" 
    } 
    2 => {#574 
    +"companyID": "U00892HR2005PTC035863" 
    +"companyName": "OPEN HOUSE DIGITAL MEDIA PRIVATE LIMITED" 
    } 
    3 => {#552 
    +"companyID": "U00804KA1999PTC024813" 
    +"companyName": "OPEN LEAF STOCKS AND SHARES PRIVATE LIMITED" 
    } 
    4 => {#548 
    +"companyID": "U72300KA2000PTC026648" 
    +"companyName": "OPEN STREAM TECHNOLOGIES (INDIA) PRIVATE LIMITED" 
    } 
    5 => {#572 
    +"companyID": "U72200KA2003PTC032219" 
    +"companyName": "OPENCLOVIS SOLUTIONS PRIVATE LIMITED" 
    } 
    6 => {#571 
    +"companyID": "U72200KA2003PTC032083" 
    +"companyName": "OPEN-SILICON RESEARCH PRIVATE LIMITED" 
    } 
    7 => {#570 
    +"companyID": "U72900KA2003PTC033042" 
    +"companyName": "OPENGEAR NETWORKS PRIVATE LIMITED" 
    } 
    8 => {#569 
    +"companyID": "U72200DL2005PTC170412" 
    +"companyName": "OPEN SOLUTIONS SOFTWARE SERVICES PRIVATE LIMITED" 
    } 
    9 => {#560 
    +"companyID": "U72112MP1985PTC002837" 
    +"companyName": "OPEN END SPINNERS PVT LTD" 
    } 
] 

Mais l'index du tableau vient aussi. Je veux que ce soit comme le suivant

[ 
    {"companyID":"U72200TG2005PTC045191","companyName":"OPEN TEXT TECHNOLOGIES INDIA PRIVATE LIMITED"}, 
    {"companyID":"U51909HR2002PTC034956","companyName":"OPEN WAYS MARKETING PRIVATE LIMITED"}, 
    {"companyID":"U00892HR2005PTC035863","companyName":"OPEN HOUSE DIGITAL MEDIA PRIVATE LIMITED"} 
    ] 

Comment puis-je y parvenir? J'ai essayé mais ma réponse finale de JSON a des index du tableau que je ne veux pas.

+0

Je crois que ce n'est pas un problème c'est le comportement de php array, si un tableau n'a pas d'index alors par défaut il faudra un index numérique, regardez https://3v4l.org/FkPPS –

+0

@Ajeesh Je pense '$ data = json_decode ($ result, true);' et l'utilisation de '$ data [0]' vous donnera la sortie attendue. –

Répondre

0

Personnellement, je contourner l'itération de cette façon:

$data = (array)json_decode($result); 
return reset($data); 

qui préservera vos valeurs intérieures comme des objets et revenir encore les valeurs intérieures comme des objets.

Si vous devez itérer, alors vous devriez appeler array_values comme le retour:

// Everything that you have above, just replace the return with 
return array_values($new_array); 

Cela permettra d'éliminer les clés et il fera en sorte que json_encode traitera comme un tableau, pas un objet spécialisé. Cela dit, si vous faites un var_dump ou un var_export, il inclura toujours les numéros d'index. C'est juste une partie du formatage.