我正在将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”
答案 0 :(得分:1)
当您获取JSON时,它以字符串的形式出现(如RowSampleMaker(schema).update("field1", value1).update("field2", value2)
所证明的那样)。要使其成为对象,必须对其进行解码:
echo $json
答案 1 :(得分:0)
$data = json_decode($json,true);
echo $data['name'];
这将为您工作。
true
参数会将json转换为数组。如果不使用它,它将把它转换为一个对象,这意味着您可以使用->
类似的东西:
$data = json_decode($json);
echo $data->name;
这是在true
函数中使用json_decode
作为第二个参数之间的区别。我认为您对此感到有些困惑,这就是为什么它不适合您的原因。