J'essaie de lire un message JSON dans mon application PHP et voici mon code php:
$json = file_get_contents('php://input');
$obj = json_decode($json, TRUE);
echo $obj->{'S3URL'};
Lorsque je fais cela, j'obtiens l'erreur suivante:
Trying to get property of non-object in setImage.php on line 25 (line 25 is the echo $obj->{'S3URL'}; line)
Voici le corps de la requête de la requête vers la page:
Request Url: http://localhost:8888/setImage.php
Request Method: POST
Status Code: 200
Params: {
"S3URL": "http://url.com"
}
Voici les en-têtes de la requête:
Accept: application/json
Content-Type: application/json
Connection: keep-alive
Origin: chrome-extension: //rest-console-id
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML,
Cependant, si au lieu de cela je répète la variable $json
, j'obtiens ce qui suit:
S3URL=http%3A%2F%2Furl.com
Donc, il semble que file_get_contents('php://input');
le lit en tant que chaîne, et non en JSON, ce qui rendra son analyse plus difficile.
Avez-vous une idée de la raison pour laquelle il n’est pas renvoyé en tant que JSON, ou comment puis-je le faire retourner en JSON?
Votre utilisation de json_decode
crée un tableau associatif, pas un objet. Vous pouvez le traiter comme un tableau, au lieu d'un objet. Si vous voulez un objet, utilisez ceci à la place:
$obj = json_decode($json);
Voir la documentation sur le deuxième paramètre à json_decode()
:
assoc Lorsque la valeur est TRUE, les objets renvoyés sont convertis en tableaux associatifs.
En outre, comme l'a souligné Johannes H. dans les commentaires, le résultat de echo $json;
indique que vous ne recevez pas réellement de code JSON, vous devez donc également y remédier. Vous avez demandé pourquoi ce n'est pas JSON; sans voir comment vous demandez ce script, il est impossible de le dire avec certitude.
Utilisez ce résultat sera
$chd = json_decode(file_get_contents('php://input'), TRUE);
$childs = implode("",$chd);
Le problème peut être de la forme php: // input (est un flux en lecture seule qui vous permet de lire des données brutes à partir du corps de la requête).
$ obj = json_decode ($ json);
Il suffit d'enlever le vrai