如何在node.js中过滤JSON数据?

如何在node.js中过滤JSON数据?,第1张

如何在node.js中过滤JSON数据?

下划线具有执行此 *** 作的where函数

var _ = require("underscore");var json = '[{"user": "a", "age": 20}, {"user": "b", "age": 30}, {"user": "c", "age": 40}]';var users = JSON.parse(json);var filtered = _.where(users, {user: "a"});// => [{user: "a", age: 20}]

另一个实用程序库Lo-
Dash
具有 *** 作相同的where函数。


您可以使用下划线添加到项目中

$ npm install --save underscore

或lodash

$ npm install --save lodash

如果您 关心该

where
功能,lodash会将其作为单独的模块提供

// only install lodash.where$ npm install --save lodash.where

在项目中使用它

var where = require("lodash.where");// ...var filtered = where(users, {"user": "a"});

即使您使用库来执行此 *** 作,一种更好的方法也可能是设置一串流,以在较小的模块中处理所有数据处理。

在不知道您实际想要做什么的情况下,我创建了此示例。就此代码而言,可能想到调试日志流或其他东西。

json-parser.js

输入:字符串(JSON)
输出:对象

var Transform = require("stream").Transform;function JsonParser() {  Transform.call(this, {objectMode: true});  this._transform = function _transform(json, enc, done) {    try {      this.push(JSON.parse(json));    }    catch (e) {      return done(e);    }    done();  }}JsonParser.prototype = Object.create(Transform.prototype, {  constructor: {    value: JsonParser  }});module.exports = JsonParser;

obj-filter.js

输入:对象
输出:对象(的结果

where(data, filters)

var Transform = require("stream").Transform;var where = require("lodash.where");function ObjFilter(filters) {  Transform.call(this, {objectMode: true});  this._transform = function _transform(obj, enc, done) {    this.push(where(obj, filters));    done();  }}ObjFilter.prototype = Object.create(Transform.prototype, {  constructor: {    value: ObjFilter  }});module.exports = ObjFilter;

stringifier.js

输入:对象
输出:字符串(JSON)

var Transform = require("stream").Transform;function Stringifier() {  Transform.call(this, {objectMode: true});  this._transform = function _transform(obj, enc, done) {    this.push(JSON.stringify(obj));    done();  }}Stringifier.prototype = Object.create(Transform.prototype, {  constructor: {    value: Stringifier  }});module.exports = Stringifier;

app.js

// modulesvar JsonParser = require("json-parser");var ObjFilter = require("obj-filter");var Stringifier = require("stringifier");// runvar parser = new JsonParser();// setup stream chainparser.pipe(new ObjFilter({"user": "a"}))      .pipe(new Stringifier())      .pipe(process.stdout);// send example json inparser.write('[{"user": "a", "age": 20}, {"user": "b", "age": 30}, {"user": "c", "age": 40}]');// output// => [{"user":"a","age":20}]

在这里,我创建了一个

Stringifier
流,该流将对象转换回JSON,以便我们可以看到它们已转储到控制台中,尽管您可以轻松创建处理应用程序所需 *** 作所需的任何流。您的流端点可能不会以书面形式写入控制台。

最后一点,您可能会创建一个接受某种查询选项并发出json的数据库流。您可以将流直接传送到

parser

无论如何,我希望这可以使您更好地了解如何在node.js中处理数据。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5476968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存