为了账号安全,请及时绑定邮箱和手机立即绑定

尝试在 php 中读取 json 对象总是返回“未定义”

尝试在 php 中读取 json 对象总是返回“未定义”

PHP
跃然一笑 2021-08-27 09:17:25
我在 Node.js 中向 php 服务器发送 POST 请求。在请求中,我将 json 作为对象而不是字符串包含在内。Node.js 请求:var request = require('request');let data = { "name":"John", "age":30, "car":null };request.post({  headers: {'content-type' : 'application/json; charset=utf-8'},  url: 'http://0.0.0.0:9000/html.php',  method: 'POST',  json: data}, function(error, response, body){  console.log(body);});html.php:<?php# Get JSON as an object$json = file_get_contents('php://input');$name = $json->name;echo $json // Prints out the whole json correctlyecho $name; // Prints out "undefined"我希望输出是“John”而不是“undefined”
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

$data = json_decode($json,true); 

echo $data['name'];

这对你有用。


该true参数会将 json 转换为数组。如果您不使用它,那么它会将其转换为一个对象,这意味着您可以使用->


类似于:


$data = json_decode($json); 

echo $data->name;

这是true在json_decode函数中用作第二个参数的区别。我认为你在那里混了一点,这就是为什么它对你不起作用。


查看完整回答
反对 回复 2021-08-27
?
桃花长相依

TA贡献1860条经验 获得超8个赞

当您获得 JSON 时,它会以字符串的形式出现(正如您用 证明的那样echo $json)。要使其成为一个对象,您必须对其进行解码:


# Get JSON as an object

$json = file_get_contents('php://input');

$jsonObject = json_decode($json);


$name = $jsonObject->name;


echo $json // Prints out a string

echo $name; 


查看完整回答
反对 回复 2021-08-27
  • 2 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信