Node.js中的body-parse没有在请求体中转义新的行字符? JSON

时间:2015-05-24 18:59:02

标签: json node.js express body-parser

我正在创建一个基本的反向代理,以将客户端请求传递给远程服务器。

所以我使用body-parse和express.js作为Node服务器,允许我传递身体。

然而,JSON包含新的行字符和额外的大括号。

客户端

{
   "lastRefreshedDateTime" : "2015-05-24",
   "uid" : "1232141451"
}

服务器端

{
    '{
        \r\n"lastRefreshedDateTime": "2015-05-24",
        \r\n"uid
": "1234567124321"\r\n
    }\r\n': ''
}

Node.js代码

        var express = require('express');
    var http = require('request');
    var path = require('path');
    var url = require("url");
    var bodyParser = require("body-parser"); //this is required in express 4.x to output the contents of the client request body
    var app = express(); //start express server

    // parse application/x-www-form-urlencoded
//app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser().json())
    // POST - getLocationData
    app.post('/getLocationData', function (request, response)
    {
        console.log("Request for /getLocationData");
        forwardRequest(request, response, "getLocationData", "POST", true);
    });


    app.listen(8080);

    function forwardRequest(request, response, serviceName, requestMethod, isJSON)
    {

        console.log("Making request to EAS for " + serviceName + ":");
        console.log(request.body); //json is fubar!

    };

我自己尝试删除新的行字符,但它仍然无法解决额外的大括号和倒置的commans的问题

2 个答案:

答案 0 :(得分:2)

在客户端丑化json。在发送字符串之前删除漂亮的打印,它应该消除问题。

在客户端使用JSON.stringify,在服务器端使用JSON.parse

  

编辑以反映评论

关于JMeter usage的问题,您遇到的问题可能实际上是由Jackson或其他Java JSON lib引起的。 将内容类型编码设置为UTF-8 通常可以完全解决问题。

答案 1 :(得分:0)

您需要body-parser,但您似乎永远不会使用它..

app.use(bodyParser());

把它放在需要

之后