将JSON打印到Node中的文件

时间:2015-07-22 20:16:24

标签: json angularjs node.js

所以我有一个非常大的JSON数据,我通过AngularJS发送到节点服务器。这是我用来发送数据的程序: -

var send_data="data="+encodeURIComponent(JSON.stringify($scope.records,null,4));
            $http({ 
            method : 'POST', 
            url : 'http://localhost:8888/updateDetails', 
            data : send_data, 
            responseType : "json",
            headers: {
                "Content-Type": 'application/x-www-form-urlencoded'
            }
          }).success(function(data, status, headers, config){
                console.log(data);
          });

我成功地设法通过上面的代码向节点服务器发送了一个漂亮的打印JSON。但是,当我使用以下命令将其写入文件时: -

jsonfile.writeFile(file, JSON.parse(req['body']['data']), function (err) {
        console.error(err);
    });

经过一些测试后,我发现错误发生在JSON.parse语句中。有什么方法可以将JSON打印到文件中吗?

1 个答案:

答案 0 :(得分:3)

使用JSON.stringify(data[, replacer[, indent]])

/* dynamic native SQL query */
SELECT
    * 
from
    UFN_REPORTE_VENTAS_DESDE_HASTA('20543886913',
    '01/07/2015',
    '21/07/2015',
    '1')

tamaño : 1648
Registro : VTGN_RV07-00003 CD_VTA : VT00012238
Registro : VTGN_RV07-00004 CD_VTA : VT00012239
Registro : VTGN_RV07-00004 CD_VTA : VT00012239
Registro : VTGN_RV07-00004 CD_VTA : VT00012239
Registro : VTGN_RV07-00004 CD_VTA : VT00012239
Registro : VTGN_RV07-00005 CD_VTA : VT00012240
Registro : VTGN_RV07-00006 CD_VTA : VT00012241
Registro : VTGN_RV07-00007 CD_VTA : VT00012242
Registro : VTGN_RV07-00008 CD_VTA : VT00012243
Registro : VTGN_RV07-00008 CD_VTA : VT00012243
Registro : VTGN_RV07-00008 CD_VTA : VT00012243
Registro : VTGN_RV07-00008 CD_VTA : VT00012243
Registro : VTGN_RV07-00017 CD_VTA : VT00012255
Registro : VTGN_RV07-00017 CD_VTA : VT00012255
Registro : VTGN_RV07-00017 CD_VTA : VT00012255
Registro : VTGN_RV07-00017 CD_VTA : VT00012255
Registro : VTGN_RV07-00017 CD_VTA : VT00012255
Registro : VTGN_RV07-00017 CD_VTA : VT00012255
Registro : VTGN_RV07-00017 CD_VTA : VT00012255
Registro : VTGN_RV07-00017 CD_VTA : VT00012255
Registro : VTGN_RV07-00018 CD_VTA : VT00012256
Registro : VTGN_RV07-00018 CD_VTA : VT00012256
Registro : VTGN_RV07-00019 CD_VTA : VT00012257
Registro : VTGN_RV07-00019 CD_VTA : VT00012257
Registro : VTGN_RV07-00019 CD_VTA : VT00012257
Registro : VTGN_RV07-00020 CD_VTA : VT00012258
Registro : VTGN_RV07-00020 CD_VTA : VT00012258
Registro : VTGN_RV07-00020 CD_VTA : VT00012258

您可能也可能不需要解析响应正文 - 我相信构建器中的jsonfile.writeFile(file, JSON.stringify(JSON.parse(req.body.data), 0, 4), function (err) { console.error(err); }); 会自动为您解析它:

responseType: "json"

以下是一个完整的工作孤立示例:

jsonfile.writeFile(file, JSON.stringify(req.body.data, 0, 4), function (err) {
    console.error(err);
});

假设您通过HTTP监听器或等框架处理POST请求?您使用身体解析器来解析传入的JSON吗?

试试吧:

  1. var fs = require('fs'); var req = JSON.parse('{"body": {"data": "Some text."}}'); fs.writeFile('test.json', JSON.stringify(req.body, 0, 4), function (err) { }); 以确保您的服务器能够识别该请求。
  2. 是JSON字符串吗?有效吗?或者它是一个javascript对象(即已经解析过)?
  3. 如果已经解析了,那么我的第二个建议就可以了。如果它还没有被解析,请像我在第一个例子中那样解析它。