javascript - 在 Node.js 中发布和解码 JSON

标签 javascript json node.js

我正在尝试将关联数组发布到另一个 Node.js 服务器,在我的服务器内部:

第一台服务器使用 Request 执行类似这样的 POST 请求:

var request = require('request');
request.post('http://localhost:8084/',{ json: {"isposted": {"ok":"val"}}});

第二个服务器的结果是这样的:

{ '{"isposted":{"ok":"val"}}': '' }

而不是:

{"isposted":{"ok":"val"}}

服务器解析数据的(第二)源代码是这样的:

var http = require('http');
var qs = require('qs');

var processRequest = function(req,callback) {
    var body='';
    req.on('data', function(data) { body+=data; });
    req.on('end',  function() { callback(qs.parse(body)); });
}

var server2 = http.createServer(function(req, res) {
    processRequest(req,function(data){
        try
        {
            data=JSON.parse(data.jsonData);
        }
        catch(e)
        {
            data=data;
        }
        console.log(data);
    });
 });

最佳答案

qs解码 JSON 的包是错误的,如下所示:callback(qs.parse(body));。尝试像这样使用 JSON.parse:callback(JSON.parse(body));

试试这个来支持不同类型的编码:

req.on('end',  function(){ 
    if ('application/json' === req.headers['content-type']) {
        callback(JSON.parse(body)); 
    }
    else {
        callback(qs.parse(body));
    }
});

关于javascript - 在 Node.js 中发布和解码 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35539964/

相关文章:

javascript - 如何在if语句中隐藏元素?

java - 如何使用带有背景标尺/图形的 Richfaces 实现组件的拖放以获得准确的坐标

javascript - 多行标题下划线

php - 改造 2 : NO Request Body even there is

node.js - 将 redis pubsub 消息转发到 express 中的特定 socket.io 客户端

javascript - 使用 javascript 切换 div 标签在 xhtml strict 中不起作用

javascript - 如何获取 Angular js 表达式以考虑来自 api 的 css 值并将其应用于其卡片

javascript - 即使请求 format=json,YQL 也会返回 application/javascript

node.js - 即使在 PATH 中也无法识别 Node

html - 无 Jade express 发电机