Recursion ODataJSON查询生成器转换。递归?

Recursion ODataJSON查询生成器转换。递归?,recursion,odata,breeze,Recursion,Odata,Breeze,我目前正在为Odata构建一个查询生成器 我从这个项目中得到了灵感: 我现在确实有了查询的json解释 但是我用来处理odata的框架有不同的格式 我的问题是查询可以无限嵌套 我需要这种输出: { or: [ age: { ">": 40 }, and: [ { lastName: { startsWith: 'A'}}, { hireDate: { '<': new Date(2010, 0, 1) }} ] ] } 我需要

我目前正在为Odata构建一个查询生成器

我从这个项目中得到了灵感:

我现在确实有了查询的json解释

但是我用来处理odata的框架有不同的格式

我的问题是查询可以无限嵌套

我需要这种输出:

{ or: [
    age: { ">": 40 }, 
    and: [
      { lastName: { startsWith: 'A'}},
      { hireDate: { '<': new Date(2010, 0, 1) }}
    ]
  ]
}
我需要一些建议来解决这个问题

因此,如果你有一个链接或一些想法,可以帮助我

我将不胜感激

   function convertQueryBuilderToBreeze(filtre) {
      var jsonObject = {};
      if (filtre.rules && filtre.operator) {
        jsonObject[filtre.operator] = filtre.rules.map(function (rule) {
          if (rule.condition) {
            var condition = {};
            var obj = {};
            obj[rule.condition] = rule.data;
            condition[rule.field] = obj;
            return condition;
          } else if (rule.group) {
            return convertQueryBuilderToBreeze(rule.group);
          }
        });
      }
      return jsonObject;
    }
   function convertQueryBuilderToBreeze(filtre) {
      var jsonObject = {};
      if (filtre.rules && filtre.operator) {
        jsonObject[filtre.operator] = filtre.rules.map(function (rule) {
          if (rule.condition) {
            var condition = {};
            var obj = {};
            obj[rule.condition] = rule.data;
            condition[rule.field] = obj;
            return condition;
          } else if (rule.group) {
            return convertQueryBuilderToBreeze(rule.group);
          }
        });
      }
      return jsonObject;
    }