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

我在 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 correctly

echo $name; // Prints out "undefined"

我希望输出是“John”而不是“undefined”


跃然一笑
浏览 157回答 2
2回答

月关宝盒

$data = json_decode($json,true);&nbsp;echo $data['name'];这对你有用。该true参数会将 json 转换为数组。如果您不使用它,那么它会将其转换为一个对象,这意味着您可以使用->类似于:$data = json_decode($json);&nbsp;echo $data->name;这是true在json_decode函数中用作第二个参数的区别。我认为你在那里混了一点,这就是为什么它对你不起作用。

桃花长相依

当您获得 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 stringecho $name;&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP