nodejs从缓冲区解码的字符串返回多行字符串

时间:2016-01-02 14:12:15

标签: javascript json node.js firebase buffer

我有一个我想要解码的缓冲区,以便我可以将其视为一个对象。

我有以下设置

var StringDecoder = require('string_decoder').StringDecoder;

var req = http.request(reqOptions, function(res) {
    ...
    var decoder = new StringDecoder('utf8');

    res.on('data', function(chunk) {
        var textChunk = decoder.write(chunk);
        console.log(textChunk);
    });
});

textChunk returns - 请注意这是多行的。

{"aaa":true,"bbb":true, "cc
c":true, "ddd":true, "eee":true, "f
ff":true, "ggg":true}

所以当我尝试将其转换为对象时

JSON.parse(textChunk) 

我得到Unexpected end of input

如何将字符串作为一行返回,以便我可以将其视为对象。

{"aaa":true,"bbb":true, "ccc":true, "ddd":true, "eee":true, "fff":true, "ggg":true}

2 个答案:

答案 0 :(得分:4)

您需要创建一个字符串变量来连接所有块,然后在最后使用您的解码器。像这样:

var text = '';

res.on('data', function(chunk) {
    text += chunk;
});

res.on('end', function() {
    var decoder = new StringDecoder('utf8');
    var result = decoder.write(text);
    // Do something with the result
});

答案 1 :(得分:0)

尝试request.js

function lucieaverillphotography_scripts() { if (is_page_template('page-templates/full-page.php')) { wp_enqueue_style( 'lucieaverillphotography-full-page' , get_template_directory_uri() . '/css/full-page.css'); } else{ wp_enqueue_style( 'lucieaverillphotography_style', get_stylesheet_uri() ); } } add_action( 'wp_enqueue_scripts', 'lucieaverillphotography_scripts' );

反过来管道结果,更简单的信任我

整个http.request /响应行将替换为

npm install request -g --save,结果是返回解析或服务,工厂或服务消费的好对象