Je génère JSON à partir d'un tableau à l'aide de Exemple: P> json_encode () code>, il fonctionne correctement, mais il utilise la clé: valeur de la matrice, comme d'habitude. Mais je veux changer le nom de la clé uniquement dans la sortie JSON. Est-il possible de le faire? Ou devrais-je préparer la clé JSON: les valeurs moi-même manuellement? {"foo":1,"something":2,"bar":3,"foo":4,"baz":5}
4 Réponses :
Vous pouvez toujours JSON_DECODE CODE> IT, puis re-encode. Mais cela va être plus facile si vous préparez simplement vos clés avant de l'encoder. P>
Seulement si vous vous réécrivez 'm vous-même. Vous pouvez utiliser:
$rewriteKeys = array('a' => 'foo', 'b' => 'something', 'c' => 'bar', 'd' => 'foo', 'e' => 'baz');
$newArr = array();
foreach($arr as $key => $value) {
$newArr[ $rewriteKeys[ $key ] ] = $value;
}
echo json_encode($newArr);
Il y a une autre option que j'ai décrite ici . L'idée principale est de considérer JSON comme une chaîne, puis d'utiliser str_replace ou preg_replace (str_replace pour REGEXP).
Il existe un code pour votre cas. P>
$mapping_array = array('a' => 'foo', 'b' => 'something', 'c' => 'bar', 'd' => 'foo', 'e' => 'baz');
$tmp_arr = array_map(function($k){ return '/\b'.$k.'\b/u'; }, array_keys($mapping_array));
$new_json = preg_replace($tmp_arr, array_values($mapping_array), $old_json);
Ceci peut être une réponse courte:
foreach ($list as $key => $val) {
$newList[$key] = [
'foo' => $val['a'],
'something' => $val['b'],
'bar' => $val['c'],
'foo' => $val['d'],
'baz' => $val['e'],
];
}
D'où viennent le foo quelque chose que les clés de barres?
Si vous ne pouvez pas modifier le tableau d'origine, créez simplement une nouvelle à l'aide des valeurs de l'original, puis convertissez-la en JSON.
Ce sera commun pour chaque tâche. Je veux le nom:, Tapez:, taille: .. et ça ne changera pas .. - Merci!