【问题标题】:Error in generating a valid json recursive javascript function生成有效的 json 递归 javascript 函数时出错
【发布时间】:2021-04-28 10:36:21
【问题描述】:

我有一个函数可以生成一个对象,稍后我将其转换为 JSON:

function createSearchCriteria(payload) {
    var output = [];
    if (payload['searchCriteria'] != null) {
        for (var i = 0; i < payload['searchCriteria'].length; i++) {
            var content = payload['searchCriteria'][i];
            output[i] = {};
            if (content['grouping'] != null) {
                output[i]['groupOperator'] = content['grouping'];
                output[i]['searchCriteria'] = [];
                output[i]['searchCriteria'].push(createSearchCriteria(content))
            } else {
                output[i]['name'] = content['name'];
                output[i]['type'] = content['type'];
            }
        }
    }
    return output
}

该方法的输入payload也是解析后的JSON值

payload = JSON.parse(request);

输入结构与输出几乎相同,唯一不同的是“分组”属性,在输出中称为“groupOperator”。

我已经实现了我的函数递归,因为我们可以有不同级别的搜索条件。

即使输入中的 searchCriteria 每个只有一个 []。

为什么结果中的每个 searchCriteria 都带有 2 对方括号?

{
    "searchCriteria": [
        {
            "groupOperator": "AND",
            "searchCriteria": [
                [
                    {
                        "groupOperator": "OR",
                        "searchCriteria": [
                            [
                                {
                                    "name": "FirstName",
                                    "type": "string"
                                },
                                {
                                    "name": "LastName",
                                    "type": "string"
                                },
                                {
                                    "name": "MiddleName",
                                    "type": "string"
                                },
                                {
                                    "name": "Document",
                                    "type": "string"
                                },
                                {
                                    "name": "DOB",
                                    "type": "date"
                                },
                                {
                                    "name": "CdrId",
                                    "type": "string"
                                }
                            ]
                        ]
                    },
                    {
                        "groupOperator": "AND",
                        "searchCriteria": [
                            [
                                {
                                    "name": "Active",
                                    "type": "bool"
                                },
                                {
                                    "name": "Id",
                                    "type": "int"
                                },
                                {
                                    "name": "CountryId",
                                    "type": "int"
                                }
                            ]
                        ]
                    }
                ]
            ]
        }
    ],
    "groupOperator": "AND"
}

提前感谢您的帮助。

【问题讨论】:

  • JSON 与这个问题完全无关,它是关于重构对象的。如果您不是专门寻找 JSON 解决方案,您应该找到更好的现有解决方案。
  • 您想如何更改输出?
  • 是的,这无关紧要,但结果必须是有效的 json,所以这就是我提到的原因。 @LajosArpad,我的响应在搜索条件中包含两组方括号,我只需要一个

标签: javascript arrays json recursion


【解决方案1】:

试试

output[i]['searchCriteria'] = createSearchCriteria(content)

而不是

output[i]['searchCriteria'] = [];
output[i]['searchCriteria'].push(createSearchCriteria(content))

【讨论】:

  • 谢谢!! Javascript 不是我的强项,所以...我没看到,它现在可以工作了!!
猜你喜欢
  • 2021-11-10
  • 2015-05-14
  • 1970-01-01
  • 2021-11-14
  • 2017-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 2016-04-25
相关资源
最近更新 更多