• Node.js Video Tutorials

Node.js - querystring.parse() 方法



使用 Node.js 的 querystring.parse() 方法,可以將 URL 查詢字串解析為一個物件,該物件包含給定 URL 查詢字串中的鍵值對。此方法返回的物件不繼承 JavaScript 的原型。這意味著 JavaScript 的物件方法和其他方法未定義,將無法工作。

預設情況下,查詢字串的百分號編碼字元將被假定為使用 UTF-8 編碼。必須指定 decodeURIComponent 選項才能解碼其他字元編碼。

語法

以下是 Node.js querystring.parse() 方法的語法:

querystring.parse(str[, sep[, eq[, options]]])

引數

此方法接受四個引數。這些引數如下所述。

  • str − 此引數指定要解析的 URL 查詢字串。

  • sep − 此引數描述一個子字串,用於在查詢字串中定義鍵值對。預設值為 '&'。

  • eq − 此引數描述一個子字串,用於在查詢字串中定義鍵和值。預設值為 '='。

  • options − 這是一個物件,它允許修改方法的行為。下面描述了此物件的以下屬性:

    • decodeURIComponent − 這是一個用於解碼查詢字串中百分號編碼字元的函式。預設情況下,它是 querystring.unescape()。

    • maxKeys − 此屬性指定要解析的最大鍵數。如果指定為 0,則鍵計數將無限大。預設值為 1000。

返回值

此方法將返回一個已解析的 URL 查詢字串,將其轉換為鍵值對集合。

示例

如果我們將 URL 字串 (str) 傳遞給 querystring.parse() 方法,它將返回一個物件,該物件包含從提供的 URL 字串解析的鍵值對。

在下面的示例中,我們將 URL 字串傳遞給 Node.js querystring.parse() 方法。

const querystring = require('node:querystring');
let urlQuery = "name=varma1&role=writer&tech=nodejs&permission=true";
console.log(querystring.parse(urlQuery));

輸出

internal/modules/cjs/loader.js:596
   throw err;
   ^

Error: Cannot find module 'node:querystring'
   at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
   at Function.Module._load (internal/modules/cjs/loader.js:520:25)
   at Module.require (internal/modules/cjs/loader.js:650:17)
   at require (internal/modules/cjs/helpers.js:20:18)
   at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:83)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)

注意 − 要檢視實際結果,請在本地執行上述程式碼。

執行上述程式後,Node.js querystring.parse() 方法將返回一個包含鍵值對的物件。

[Object: null prototype] {
   name: 'varma1',
   role: 'writer',
   tech: 'nodejs',
   permission: 'true'
}

示例

如果 sepeq 引數中提供的值與指定 URL 字串的分隔符不匹配,則 Node.js querystring.parse() 方法將無法正常工作。如果匹配,它將返回包含鍵值對的物件。

在下面的程式中,我們將 && 傳遞給 sep 引數,並將 = 傳遞給 Node.js querystring.parse() 方法的 eq 引數。

const querystring = require('node:querystring');
let urlQuery = "name=varma1&&role=writer&&tech=nodejs&&permission=true";
console.log(querystring.parse(urlQuery, "&&", "="));

輸出

internal/modules/cjs/loader.js:596
   throw err;
   ^

Error: Cannot find module 'node:querystring'
   at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
   at Function.Module._load (internal/modules/cjs/loader.js:520:25)
   at Module.require (internal/modules/cjs/loader.js:650:17)
   at require (internal/modules/cjs/helpers.js:20:18)
   at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:83)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)

注意 − 要檢視實際結果,請在本地執行上述程式碼。

如果執行上述程式,則輸出將顯示如下。

[Object: null prototype] {
   name: 'varma1',
   role: 'writer',
   tech: 'nodejs',
   permission: 'true'
}

示例

如果提供的 sepeq 值與指定的 URL 字串的分隔符不匹配,則 Node.js querystring.parse() 方法將無法按預期工作。如果匹配,它將返回包含鍵值對的物件。

在下面的程式中,我們將 & 傳遞給 sep 引數,並將 − 傳遞給 Node.js querystring.parse() 方法eq 引數。

const querystring = require('node:querystring');
let urlQuery = "User-john&role−softwareeng&tech−HTML&permission−false";

console.log(querystring.parse(urlQuery, "&", "−"));

輸出

internal/modules/cjs/loader.js:596
   throw err;
   ^

Error: Cannot find module 'node:querystring'
   at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
   at Function.Module._load (internal/modules/cjs/loader.js:520:25)
   at Module.require (internal/modules/cjs/loader.js:650:17)
   at require (internal/modules/cjs/helpers.js:20:18)
   at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:83)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)

注意 − 要檢視實際結果,請在本地執行上述程式碼。

如果執行上述程式,則輸出將顯示如下。

[Object: null prototype] {
  User: 'john',
  role: 'softwareeng',
  tech: 'HTML',
  permission: 'false'
}

示例

Node.js querystring.parse() 方法將返回 maxkeys 引數中指定的最大鍵數之前的 對。

在下面的示例中,我們執行兩種情況。在第一種情況下,我們將 1 傳遞給 maxkeys 引數。在第二種情況下,maxkeys 設定為 2。

const { url } = require('node:inspector');
const querystring = require('node:querystring');

let QueryString = "User−john&role−softwareeng&tech−HTML&permission−false";

console.log(querystring.parse(QueryString, "&", "−", { maxKeys: 1}));
console.log(querystring.parse(QueryString, "&", "−", { maxKeys: 2}));

輸出

internal/modules/cjs/loader.js:596
   throw err;
   ^
   
Error: Cannot find module 'node:inspector'
   at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
   at Function.Module._load (internal/modules/cjs/loader.js:520:25)
   at Module.require (internal/modules/cjs/loader.js:650:17)
   at require (internal/modules/cjs/helpers.js:20:18)
   at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:79)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)

注意 − 要檢視實際結果,請在本地執行上述程式碼。

如果執行上述程式,則輸出將顯示如下。

[Object: null prototype] { User: 'john' }
[Object: null prototype] { User: 'john', role: 'softwareeng' }

示例

如果我們向 maxkeys 引數提供 0,則鍵計數限制將無限。

在下面的程式中,我們將 0 傳遞給 Node.js querystring.parse() 方法的 maxkeys 引數。

const { url } = require('node:inspector');
const querystring = require('node:querystring');

let QueryString = "User−Kasyap&role−Manager&Exp−eightyrs&permission−true";
console.log(querystring.parse(QueryString, "&", "−", { maxKeys: 0}));

輸出

internal/modules/cjs/loader.js:596
   throw err;
   ^
   
Error: Cannot find module 'node:inspector'
   at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
   at Function.Module._load (internal/modules/cjs/loader.js:520:25)
   at Module.require (internal/modules/cjs/loader.js:650:17)
   at require (internal/modules/cjs/helpers.js:20:18)
   at Object.<anonymous> (/home/cg/root/63a03fcfc3513/main.js:1:79)
   at Module._compile (internal/modules/cjs/loader.js:702:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:713:10)
   at Module.load (internal/modules/cjs/loader.js:612:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
   at Function.Module._load (internal/modules/cjs/loader.js:543:3)

注意 − 要檢視實際結果,請在本地執行上述程式碼。

如果執行上述程式,則輸出將顯示如下。

[Object: null prototype] {
   User: 'Kasyap',
   role: 'Manager',
   Exp: 'eightyrs',
   permission: 'true'
}
nodejs_querystring_module.htm
廣告
© . All rights reserved.