2017-08-31 40 views
4

我的问题很简单。我知道查询字符串npm做的工作,但有特殊情况。 我的查询参数如下所示:如何使用queryString或任何其他方法解析url params

params={ 

foo:'bar', 
data:[1,2,3], 
data2:[4,5,6] 
} 

我需要输出类似?foo=bar&data=1,2,3&data2=4,5,6

不是由query-sting完成。 query-sting输出为

?foo=bar&data=1 &data=2&data=3..........

+0

首先你尝试过什么吗?其次,在'&'之前和之后你需要这些空间吗? – Rajesh

+0

@Rajesh我尝试使用查询字符串,arrayIndex作为可选参数。 –

回答

2

你所面临的问题是可以解决如下:

const queryString = require('query-string') 

const seacrh=queryString.stringify(params) 

上面的行产生search=?foo=bar&data=1%0C2%0C3&data2=4%0C5%0C6

为了除去不合逻辑字符,只是用下面的代码行

const search1=decodeURIComponent(seacrh); 

的decodeURIComponent解码那些不合逻辑串进行解码的URL。

+0

一个'seacrh'与这个有什么关系? ^^ – BotNet

+0

@BotNet,雅我知道这是不必要的。我甚至可以把它写成:::::::::::: const result = decodeURIComponent(queryString.stringify(params)) – user2903536

+0

我觉得我正在被cutie指出拼写错误;) – BotNet

0

下你以后有什么应该做的。

我只是使用了array.join,让您的数据=为正确的格式..

var params={ 
 
    foo:'bar', 
 
    data:[1,2,3], 
 
    data2:[4,5,6] 
 
}; 
 

 
//?foo=bar&data=1,2,3 & data2=4,5,6 
 

 
console.log(
 
    `?foo=${params.foo}&data=${params.data.join(',')}&data2=${params.data2.join(',')}`);

+0

我尝试用这种方式,像newdata = params.data.join(',')。然后传递newdata作为params。例如params = {foo:'bar',data:newdata}。 但是它的输出结果并不如预期的那样。 ?foo ='bar'&data = 1%0C2 –

0

下面是做记号的功能:

var params = { 
 
    foo: 'bar', 
 
    data: [1,2,3], 
 
    data2: [4,5,6] 
 
}; 
 

 
function toQuery (params) { 
 
    var queryString = ''; 
 
    // Check that we've been suplied with an object. 
 
    if (params.constructor !== Object) { 
 
    return queryString; 
 
    } 
 
    // Iterate over parameters 
 
    for (var param in params) { 
 
    if (!params.hasOwnProperty(param)) { 
 
     continue; 
 
    } 
 
    if (typeof params[param] === 'string' || typeof params[param] === 'number') { 
 
     queryString += '&' + param + '=' + params[param]; 
 
    } 
 
    if (params[param].constructor === Array && params[param].length) { 
 
     queryString += '&' + param + '=' + params[param].join(','); 
 
    } 
 
    } 
 
    // Change first '&' to '?' 
 
    if (queryString.length) { 
 
    queryString = '?' + queryString.substring(1); 
 
    } 
 
    // Return the query string, empty string if no usable parameters. 
 
    return queryString; 
 
} 
 

 
console.log(toQuery(params));

0

如果你需要建立你的搜索:

let params = { 
 
    foo: 'bar', 
 
    data: [1, 2, 3], 
 
    data2: [4, 5, 6] 
 
}; 
 

 
let queryString = Object.keys(params).map(
 
    key => `${key}=${params[key]}` 
 
).join('&'); 
 

 
console.log(queryString)

  • 字符串构造会自动逗号分隔阵列
  • 这是非常基本的,不包含任何URI编码等
相关问题