2014-07-24 3 views
-2

Je suis novice en php m en créant un service web pour mes réponses de couleurs. Cela fonctionne très bien sur mon application web, car je peux récupérer des données facilement maintenant dans android m coincé.modifier la réponse json en php?

J'ai une réponse comme ça.

{ 

     "#CCCCCC":[43.2,"SILVER"], 
     "#424153":[42.6,"GREY"], 
     "#999999":[13.7,"LIGHT GREY"] 
} 

Je veux changer cela comme ça.

{ 
    "colors": 
      [ 
       { 
       "hex" : "#CCCCCC", 
       "percentgae" : "43.2", 
       "name" : "silver" 
       }, 
       { 
       "hex" : "#424153", 
       "percentgae" : "43.2", 
       "name" : "grey" 
       }, 
       { 
       "hex" : "#999999", 
       "percentgae" : "13.2", 
       "name" : "light grey" 
       } 
      ] 
} 

pouvez-vous me dire comment faire cela.

Merci.

+0

Pouvez-vous partager ce que vous avez essayé? –

+0

Oui, s'il vous plaît mettez à jour avec le code que vous avez jusqu'à présent pour générer la structure de tableau que vous avez actuellement. –

+0

J'ai un tableau à deux dimensions qui retourne comme ça "#CCCCCC" => "23" et j'ai un tableau qui retourne le nom de la valeur hexadécimale "#CCCCCC" => "Gray". Je fusionne les deux tableaux en utilisant $ result = array_merger_recursive ($ array1, $ array2). Ce qui me donne un tableau comme ça (Array [#CCCCCC] => array (0 => 23, 1 => Gray)). maintenant je convertis le résultat $ en JSON en utilisant json_encode ($ result). – umair

Répondre

1

Vous pouvez utiliser la fonction suivante

<?php 

function format($json) { 
    $colors = json_decode($json); 
    $result = []; 
    foreach ($colors as $color => $attributes) { 
     $result[] = [ 
      'hex'   => $color, 
      'percentagae' => $attributes[0], 
      'name'  => $attributes[1] 
     ]; 
    } 

    return json_encode([ 'colors' => $result]); 
} 

$json  = '{ "#CCCCCC":[43.2,"SILVER"], "#424153":[42.6,"GREY"], "#999999":[13.7,"LIGHT GREY"] }'; 
$expectation = '{"colors":[{"hex":"#CCCCCC","percentagae":43.2,"name":"SILVER"},{"hex":"#424153","percentagae":42.6,"name":"GREY"},{"hex":"#999999","percentagae":13.7,"name":"LIGHT GREY"}]}'; 
$response = format($json); 

if ($response != $expectation) { 
    throw new Exception('FAIL'); 
} 

echo 'SUCCESS'; 
+0

Cela m'aide à obtenir le résultat souhaité. donc j'accepte tes années: – umair