Javascript post请求期间更改的JSON字符串

Javascript post请求期间更改的JSON字符串,javascript,json,node.js,Javascript,Json,Node.js,我试图将以下Javascript对象从一个本地nodejs(express)实例发送到另一个实例 var v = { items: [{ id: "fil1", values: [ { key: "123", timestamp: 333, value: "aaa" }, { key: "123", timestamp: 333, value: "aaa" }, { key: "123

我试图将以下Javascript对象从一个本地nodejs(express)实例发送到另一个实例

var v = {
    items: [{
        id: "fil1",
        values: [
            { key: "123", timestamp: 333, value: "aaa" },
            { key: "123", timestamp: 333, value: "aaa" },
            { key: "123", timestamp: 333, value: "aaa" },
            { key: "123", timestamp: 333, value: "aaa" }
        ]
    }]
};
我使用以下post请求,其中
request=require('request')
,而
params
是上面对象
v
的JSON.stringized版本

var performPostRequest = function (ip, port, endpoint, params, callback) {
var url = "http://" + ip + ":" + port + "/" + endpoint;
request.post({
    url: url,
    form: params,
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    }
}, function (err, response, body) {
    if (err) {
        callback(err, body);
    }
    if (body) {
        callback(err, JSON.parse(body));
    }
});
};
接收端点如下所示:

router.post('/values', function (req, res) {

    console.log(req.body);

    res.status(201).send("");
});
其中router是express.router()

因此,对于我的问题:当在发送方打印
JSON.stringify(v)
时,结果是一个与对象v匹配的字符串,但是当在接收端点打印请求主体时,字符串被弄乱了(见下文)。我做错了什么?

JSON.stringify(v)
发件人:

{"items":[{"id":"fil1","values":[{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"}]}]}
req.body
at receiver:

{ '{"items":': { '{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"},{"key":"123","timestamp":333,"value":"aaa"}': '' } }
您可以使用处理一切的
JSON
选项发送JSON,包括:

json-将值的body设置为json表示形式并添加 内容类型:应用程序/json头。此外,解析 响应主体为JSON


params
是字符串吗?指示
表单
选项的值应该是对象或查询字符串,而不是JSON字符串。你想用
body
吗?谢谢你,伯特兰,我会试试的。“form”选项是否不应用于json?来自同一个:
form-当传递对象或查询字符串时,这会将body设置为值的查询字符串表示形式,并添加内容类型:application/x-www-form-urlencoded header。如果未传递任何选项,则返回FormData实例(并通过管道发送到请求)
。所以不,它不应该用于Json数据,而应该用于url编码的数据
var request = require('request');

var options = {
    url: url,
    method: 'POST',
    json: {
        items: [{
            id: "fil1",
            values: [
                { key: "123", timestamp: 333, value: "aaa" },
                { key: "123", timestamp: 333, value: "aaa" },
                { key: "123", timestamp: 333, value: "aaa" },
                { key: "123", timestamp: 333, value: "aaa" }
            ]
        }]
    };
};

request(options, function(error, response, body) {
    if (error) {
        callback(err, body);
    }
    if (body) {
        callback(error, body);
    }
});