You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JSON表示前端用户的筛选条件?

用JSON结构化存储前端筛选条件的成熟方案

你需要的这种将用户筛选偏好编码为JSON的需求,已经有非常成熟的实践方案,主流分为两种方向,可根据你的场景复杂度选择:

1. MongoDB风格查询语法(推荐用于中简单场景)

这种方案借鉴MongoDB的查询文档格式,用JSON对象直接描述字段的匹配规则,语义清晰且易于前端生成和解析。针对你给出的示例需求,对应的JSON结构如下:

{
  "userEmail": { "$in": ["X@fake.com", "Y@fake.com", "Z@fake.com"] },
  "tags": { "$all": ["A", "B"] }
}
  • 核心逻辑:每个字段对应一个规则对象,用$in、$all、$eq、$gt等操作符定义匹配条件
  • 优势:结构简洁,前端开发者易理解,很多工具库(如lodash的_.matches、sift.js)直接支持这种语法的筛选执行
  • 适用场景:大多数无复杂嵌套逻辑的筛选需求

2. 类SQL AST的结构化查询(推荐用于复杂场景)

如果你的筛选涉及多层嵌套的AND/OR/NOT逻辑,可以采用类似SQL抽象语法树(AST)的结构,用明确的节点类型描述逻辑关系。针对你的示例,对应的JSON结构如下:

{
  "type": "AND",
  "conditions": [
    {
      "type": "IN",
      "field": "userEmail",
      "values": ["X@fake.com", "Y@fake.com", "Z@fake.com"]
    },
    {
      "type": "ALL",
      "field": "tags",
      "values": ["A", "B"]
    }
  ]
}
  • 核心逻辑:用type字段定义逻辑节点类型(AND/OR/NOT),conditions数组包含子条件;子条件同样用type定义操作类型(IN/ALL/EQ等),搭配field和values指定目标字段和匹配值
  • 优势:扩展性极强,可支持任意复杂的逻辑组合,比如嵌套的OR条件、多字段联合判断等
  • 适用场景:需要支持复杂筛选逻辑的场景,比如用户可以自由组合多个条件组

实践建议

  • 确定结构后,前端UI只需根据用户的选择生成对应的JSON结构即可,无需关心后续的筛选执行逻辑
  • 存储时直接将JSON存入数据库(多数数据库都支持JSON类型字段),取回后可根据结构自行实现筛选函数,或使用现成库解析执行

内容的提问来源于stack exchange,提问作者Aaron Parisi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 01:13:30