【问题标题】:parsing json streams using JSONPath and JSONStream使用 JSONPath 和 JSONStream 解析 json 流
【发布时间】:2017-02-05 19:00:06
【问题描述】:

我有这样的数据流:

{"foo": 1} {"bar": 2}

注意:这些地图之间没有逗号。

我想在 node.js 中读取这个流,以便我可以捕获两个映射,如上所示。我一直在尝试使用 JSONStream 来做到这一点,它擅长识别流中的离散 JSON 实体,但它会在某种程度上改变数据。所以我运行的代码是:

var jsonStream = require('JSONStream');
var es = require('event-stream');

var parser = jsonStream.parse('$*');
process.stdin.pipe(parser)
.pipe(es.mapSync(function (data) {
    console.log(data);
}));

这个输出:

{ value: 1, key: 'foo' }
{ value: 2, key: 'bar' }

我希望它输出未更改的 JSON 映射:

{"foo": 1}
{"bar": 2}

任何人都知道我如何使用 JSONStream 或其他东西来实现这一点?

【问题讨论】:

    标签: json node.js jsonpath jsonstream


    【解决方案1】:

    看起来 JSONStream 不仅仅是解决这个问题所需要的,它在后台使用 jsonparse,所以我的问题的解决方案是:

    var Parser = require('jsonparse');
    
    var parser = new Parser();
    process.stdin.on("readable", function () {
        var chunk = process.stdin.read();
        if (chunk) {
            parser.write(chunk);
        }
    });
    
    parser.onValue = function (v) {
        if (this.stack.length === 0) {
            console.log(v);
        }
    };
    

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 1970-01-01
      • 2022-01-03
      • 2021-09-18
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      相关资源
      最近更新 更多