J'ai des objets comme ci-dessous

{
"user": "58a9bf92e0f78000055dd932",
"type": "template_created",
"count": 2
}

J'ai besoin d'obtenir le champ 'user', ..->type renvoie "template_created" et ..->count donne sa valeur mais ..->user renvoie null. Ces objets proviennent d'ailleurs du framework d'agrégation mongodb.

0
aydinugur 16 nov. 2017 à 12:53

4 réponses

Meilleure réponse

Utilisez ce code

$data = json_decode($data); //where $data contain the json
$data->user;
1
urfusion 16 nov. 2017 à 09:59

Vous pouvez résoudre de deux manières: -

$data = '{
    "user": "58a9bf92e0f78000055dd932",
    "type": "template_created",
    "count": 2
    }';
$objectdata = json_decode($data); //stclassobject
echo $objectdata->count;
  --------OR-------
$arraydata= json_decode($data,true); //convert to array
echo $arraydata['count'];

J'espère que ça aide!

0
kunal 16 nov. 2017 à 10:11

N'oubliez pas de vérifier les erreurs après json_decode, comme ceci:

$payload = json_decode($data);
if (json_last_error() !== JSON_ERROR_NONE) {
    throw new RuntimeException('Invalid JSON.');
}
// also you cah check this
if (property_exists($payload, 'user')) {
    var_export($payload->user);
}
1
V. Kovpak 16 nov. 2017 à 10:03

Il semble que vos objets soient encodés en json . Cela signifie que vous pouvez utiliser les fonctions php natives json_encode() et json_decode() pour les traiter. Dans votre exemple, vous pouvez désérialiser l'objet en appelant

$obj = json_decode($str);

Avec $str étant les données que vous montrez ci-dessus. Vous pouvez maintenant accéder aux champs de cet objet avec des méthodes d'accès PHP standard comme

$type = $obj->type;

J'espère que cela t'aides!

1
Karim 16 nov. 2017 à 09:57
47326483