134 votes

Créer JSON-objet de la bonne façon

Je suis en train de créer un objet JSON d'un tableau PHP. Le tableau ressemble à ceci:

$post_data = array('item_type_id' => $item_type,
    'string_key' => $string_key,
    'string_value' => $string_value,
    'string_extra' => $string_extra,
    'is_public' => $public,
    'is_public_for_contacts' => $public_contacts);

Le code pour coder le JSON ressembler à ceci:

$post_data = json_encode($post_data);

Le fichier JSON est censé ressembler à ça à la fin:

{
    "item": {
        "is_public_for_contacts": false,
        "string_extra": "100000583627394",
        "string_value": "value",
        "string_key": "key",
        "is_public": true,
        "item_type_id": 4,
        "numeric_extra": 0
    }
} 

Comment puis-je encapsuler la création du code JSON dans le "point": { JSON CODE ICI }.

193voto

Cristian Points 92147

Habituellement, vous voulez faire quelque chose comme ceci:

$post_data = json_encode(array('item' => $post_data));

Mais, comme il semble que vous voulez à la sortie de la avec "{}"vous feriez mieux de vous assurez-vous de force json_encode() pour encoder en tant qu'objet, en passant par l' JSON_FORCE_OBJECT constante.

$post_data = json_encode(array('item' => $post_data), JSON_FORCE_OBJECT);

"{}" supports de spécifier un objet et "[]" sont utilisés pour les tableaux selon JSON spécification.

39voto

zeusstl Points 23

Vous avez juste besoin d'une autre couche de votre tableau php:

$post_data = array(
  'item' => array(
    'item_type_id' => $item_type,
    'string_key' => $string_key,
    'string_value' => $string_value,
    'string_extra' => $string_extra,
    'is_public' => $public,
   'is_public_for_contacts' => $public_contacts
  )
);

echo json_encode($post_data);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X