la fonction json_decode() pour retourner d'erreur “Notice: Essayer d'obtenir la propriété de non-objet”
Je suis en train d'écrire un script qui récupère un fichier JSON à partir d'un emplacement distant (dans ce cas être twitch.tv) à l'aide de cURL (ne pense pas que la partie est trop pertinent, bien que je ferais mieux de le mentionner tout de même). Pour les fins de l'exemple, disons que l'objet JSON il retourne ressemble à quelque chose comme ceci après avoir été stockée dans une variable:
$json_object = {"_links":{"self":"https://api.twitch.tv/kraken/streams/gmansoliver","channel":"https://api.twitch.tv/kraken/channels/gmansoliver"},"stream":null}
- Je accéder au "flux" de la propriété, j'ai essayé le code ci-dessous:
<?php
$json_object = {"_links":{"self":"https://api.twitch.tv/kraken/streams/gmansoliver","channel":"https://api.twitch.tv/kraken/channels/gmansoliver"},"stream":null}
$json_decoded = json_decode($json_object, true);
echo $json_decoded->stream;
?>
Quand j'ai essayer ceci, j'obtiens l'erreur "Notice: Essayer d'obtenir la propriété de non-objet dans D:\Servers\IIS\Sites\mysite\getstream.php sur la ligne 48".
Suis-je à l'aide de la fonction json_decode() mauvais, ou est-il quelque chose de mal avec l'objet JSON je suis envoyé de twitch?
Edit:
J'ai maintenant l'objet JSON:
{"access_token": "qwerty1235","refresh_token": "asdfghjkl=","scope": ["user_read"]}
Si j'essaie de le décoder à l'aide de json_decode()
j'obtiens l'erreur suivante: Object of class stdClass could not be converted to string
. Des conseils?
Merci d'avance pour toute aide
json_decode
.Que la fonction json_decode($jsonString) retournera une stdClass, mais il sera de retour un tableau lors de l'ajout d'un vrai argument.
wow, ne peux pas croire que je n'ai pas l'attraper. Je l'ai bien que le paramètre pour associatif choses, devinez qui s'applique uniquement à des tableaux. L'esprit annonce que comme une réponse si je peux le marquer comme tel?
OriginalL'auteur grahamhoyes | 2014-08-08
Vous devez vous connecter pour publier un commentaire.
Vous êtes décodage JSON dans un tableau.
json_decode($json_object, true);
Retournera un tableau
Si vous supprimez le deuxième paramètre et l'exécuter en tant que
json_decode($json_object)
Voir la documentation, Lorsque la valeur est TRUE, les objets retournés seront convertis dans les tableaux associatifs.
{"access_token":"qwerty12345","refresh_token":"asdfghjk=","scope":["user_read"]}
. Si j'essaie de le décoder à l'aide dejson_decode()
j'obtiens l'erreur suivante:Object of class stdClass could not be converted to string
. Tous les conseils?Ce n'est pas json valide
Aucune raison que tu voulais l'utiliser comme une classe à la place de tableau?
Vous avez raison à ce sujet étant invalide json, en quelque sorte il a obtenu foiré quand j'ai collé ici. Cette json semble être appropriée selon les validateurs en ligne:
{"access_token": "qwerty1235","refresh_token": "asdfghjkl=","scope": ["user_read"]}
Cela fonctionne toujours pour moi, de ne pas trop où ça va mal pour vous. Avec le JSON que tu viens de poster ici, exécuter en tant
$data = json_decode($json_str, true);
vous pouvez ensuite accéder à laaccess_token
comme$data['access_token']
OriginalL'auteur Bankzilla
Vous avez défini le deuxième paramètre ($assoc) de la fonction json_decode() à true, ce qui signifie qu'il va retourner un tableau associatif au lieu d'un objet. Vous ensuite essayé de référence sur le style d'objet. Si vous êtes le réglage de la deuxième paramètre à true, vous devez utiliser le tableau associatif de style pour accéder au contenu de flux. Il serait:
Si vous définissez l' $assoc paramètre à false (ou ne spécifiez pas le paramètre), puis vous pouvez faire référence à un objet:
Si vous ne var_dump sur l' $json_decoded variable que vous allez voir à quoi il ressemble. C'est un bon moyen de voir ce que vous travaillez avec.
OriginalL'auteur johnjg12