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

如何对json-logic自定义函数返回值取反?求问题排查帮助

问题排查方案

最可能的原因:自定义函数注册不匹配

json-logic的操作符名称区分大小写,如果注册时的函数名和规则里的名称不一致,或者未正确注册,json-logic会将未知操作视为undefined,而!undefined的结果是true,刚好符合你的现象。

验证与修复:

  1. 确保注册的函数名和规则中的名称完全一致:

    // 注册时的名称要和规则里的"customFunction"完全匹配
    jsonLogic.addOperation('customFunction', customFunction);
    
  2. 单独验证自定义函数在规则中的执行结果:

    const testRule = {"customFunction": [["math"], {"var": "STUDENT.CLASSROOM.SUB"}]};
    const testData = { STUDENT: { CLASSROOM: { SUB: 'math' } } };
    const testResult = jsonLogic.apply(testRule, testData);
    console.log(testResult); // 正常应该输出true,若输出undefined则说明注册失败
    

其他排查方向

  • 确认!操作符本身正常:

    const notTest = {"!": true};
    console.log(jsonLogic.apply(notTest)); // 应输出false,若异常则是json-logic核心问题
    
  • 检查自定义函数参数签名:json-logic的自定义操作函数第一个参数是传入的参数数组,第二个是data对象,确保签名符合规范:

    const customFunction = (args, data) => {
      // args为规则中传入的参数数组:[["math"], data.STUDENT.CLASSROOM.SUB]
      return true;
    };
    
  • 升级json-logic版本:若使用旧版本,可能存在自定义函数与取反操作的交互bug,尝试升级到最新版的json-logic-js。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:43:26