【发布时间】: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