2017-08-31 72 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編碼等
相關問題