具有数组的Javascript对象,用于搜索参数样式查询字符串

时间:2019-01-09 00:05:19

标签: javascript node.js query-string

寻找一种干净的方法将包含数组的javascript对象转换为与搜索参数兼容的查询字符串的值。在移至下一个索引之前,先序列化每个数组中的元素。

使用查询字符串或qs之类的库可以很好地转换对象,但是可以独立处理每个数组。将结果字符串传递到服务器(我无法更改)会导致项目处理错误,因为每个先前的值都将被下一个覆盖。不支持在查询字符串中使用任何类型的数组符号。我没有尝试过的唯一选项是自定义排序函数,但似乎比编写自定义函数来解析对象要糟糕。也欢迎对该对象进行任何修改以产生预期的结果。

var qs = require("qs")
var jsobj = {
    origString:['abc','123'],
    newString:['abcd','1234'],
    action:'compare'
}
qs.stringify(jsobj,{encode:false})
qs.stringify(jsobj,{encode:false,indices:false})
qs.stringify(jsobj,{encode:false,indices:false,arrayFormat:'repeat'})

返回的结果是

"origString=abc&origString=123&newString=abcd&newString=1234&action=compare"
所需的结果将是
"origString=abc&newString=abcd&origString=123&newString=1234&action=compare"

2 个答案:

答案 0 :(得分:0)

我尝试对您的json重新排序:

to_csv

但是我不知道这是否可以解决您的问题。

答案 1 :(得分:0)

将其解释为对应用程序的误解。在花了更多时间使用API​​之后,我意识到了我的错误,正如其他人在上面发布的,顺序无关紧要。不知道为什么我的前几次尝试都失败了,但问题已被“回答”