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

时间:2019-06-17 13:17:10

标签: php node.js json

我正在将Node.js中的POST请求发送到php服务器。在请求中,我将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”

2 个答案:

答案 0 :(得分:1)

当您获取JSON时,它以字符串的形式出现(如RowSampleMaker(schema).update("field1", value1).update("field2", value2)所证明的那样)。要使其成为对象,必须对其进行解码:

echo $json

EXAMPLE

答案 1 :(得分:0)

$data = json_decode($json,true); 
echo $data['name'];

这将为您工作。

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

访问嵌套元素

类似的东西:

$data = json_decode($json); 
echo $data->name;

这是在true函数中使用json_decode作为第二个参数之间的区别。我认为您对此感到有些困惑,这就是为什么它不适合您的原因。