Last active
May 21, 2025 08:10
-
-
Save 4sskick/4c7368da1349bdde16ea7c11b1d90d7a to your computer and use it in GitHub Desktop.
parse dynamic URL encoded key value
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
let's say got string encoded URL like this | |
'pData%5B0%5D%5Bvalue%5D=&pData%5B0%5D%5Bname%5D=MultiAllowanceDetailOriginalEmployeeMultiAllowanceRecordList&pData%5B1%5D%5Bvalue%5D=MultiAllowanceDetail&pData%5B1%5D%5Bname%5D=MultiAllowanceDetailItemCode&pData%5B2%5D%5Bvalue%5D=true&pData%5B2%5D%5Bname%5D=MultiAllowanceDetailHasMultipleRecord&pData%5B3%5D%5Bvalue%5D=00000000-0000-0000-0000-000000000000&pData%5B3%5D%5Bname%5D=MultiAllowanceDetailRecordID&pData%5B4%5D%5Bvalue%5D=787b382e-bf20-f011-bad0-06d40d699a17&pData%5B4%5D%5Bname%5D=MultiAllowanceDetailParentRecordID&pData%5B5%5D%5Bvalue%5D=A&pData%5B5%5D%5Bname%5D=MultiAllowanceDetailDataChangeType&pData%5B6%5D%5Bvalue%5D=%7B%22OriginalEmployeeMultiAllowanceRecordList%22%3A%5B%7B%22RecordID%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22TargetRecordID%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22ParentRecordID%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22AllowanceCode%22%3A%22%23AR_BASC%22%2C%22DateStart%22%3A%222018-02-23T00%3A00%3A00%22%2C%22DateEnd%22%3A%220001-01-01T00%3A00%3A00%22%2C%22Quantity%22%3A12345%2C%22CurrencyCode%22%3A%22%22%2C%22RunType%22%3A%22M%22%2C%22PayRunBatch%22%3A%22%22%2C%22DetailRemarks%22%3A%22%22%2C%22DataChangeType%22%3Anull%2C%22EmployeeCode%22%3A%22TH012%22%2C%22PSMultiAllowanceRecordID%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22PSMultiAllowanceRecordIDOriginal%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22EmployeeCodeOriginal%22%3A%22TH012%22%2C%22TargetRecordIDOriginal%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22ParentRecordIDOriginal%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22AllowanceCodeOriginal%22%3A%22%23AR_BASC%22%2C%22DateStartOriginal%22%3A%222018-02-23T00%3A00%3A00%22%2C%22DateEndOriginal%22%3A%220001-01-01T00%3A00%3A00%22%2C%22QuantityOriginal%22%3A12345%2C%22CurrencyCodeOriginal%22%3A%22%22%2C%22RunTypeOriginal%22%3A%22M%22%2C%22PayRunBatchOriginal%22%3A%22%22%2C%22DetailRemarksOriginal%22%3A%22%22%2C%22Old%22%3Anull%2C%22AdditionalMessages%22%3Anull%7D%5D%2C%22ItemCode%22%3A%22MultiAllowanceDetail%22%2C%22HasMultipleRecord%22%3Atrue%2C%22RecordID%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22ParentRecordID%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22DataChangeType%22%3A%22A%22%2C%22OriginalValues%22%3Anull%2C%22TargetRecordID%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22IsHasDataChange%22%3Afalse%2C%22EmployeeCode%22%3A%22TH012%22%2C%22SubmitRole%22%3A%22%22%2C%22ScreenName%22%3A%22MultiAllowanceDetail%22%2C%22IsSingle%22%3Afalse%2C%22IsHR%22%3Afalse%2C%22CanAddNew%22%3Atrue%2C%22DateStart%22%3A%220001-01-01T00%3A00%3A00%22%2C%22DateStartUI%22%3A%220001-01-01T00%3A00%3A00%22%2C%22AttachmentID%22%3Anull%2C%22SubmitterRequest%22%3Anull%2C%22SkillCodeUI%22%3Anull%2C%22SkillCode%22%3Anull%2C%22MultiDetailRecord%22%3Anull%2C%22PSCAccess%22%3A%7B%22RetrieveLatestData%22%3Afalse%2C%22RequireApproval%22%3Anull%2C%22ScreenName%22%3A%22MultiAllowanceDetail%22%2C%22ScreenAccess%22%3A%22*%22%2C%22SubmissionMessage%22%3A%22%22%2C%22RequireAcknowledgement%22%3A%22%22%2C%22Sequence%22%3A3%2C%22Enabled%22%3Atrue%2C%22RestrictModify%22%3Afalse%2C%22AllowAttachment%22%3A%22%22%2C%22AttachmentRequiredCountryCodes%22%3A%22%22%2C%22AttachmentOptionalCountryCodes%22%3A%22%22%2C%22RestrictDelete%22%3Afalse%2C%22AttachmentAccess%22%3A%22%22%2C%22LatestDetail%22%3Afalse%2C%22CountryCodes%22%3A%22%22%2C%22TagField%22%3A%22%22%2C%22Caption%22%3Anull%2C%22HasWritableField%22%3Afalse%2C%22HasReadableField%22%3Afalse%2C%22Name%22%3Anull%2C%22AllowAttachmentRequired%22%3Anull%2C%22AllowAttachmentOptional%22%3Anull%2C%22AllowAttachmentNotAvailable%22%3Anull%2C%22DisplayScreenName%22%3A%22MultiAllowanceDetail%22%2C%22Old%22%3Anull%2C%22AdditionalMessages%22%3Anull%7D%2C%22TargetTableName%22%3A%22TblRecurring%22%2C%22KeyFields%22%3A%5B%5D%2C%22SelectionName%22%3A%22PSMultiAllowanceDetail%22%2C%22Old%22%3Anull%2C%22AdditionalMessages%22%3Anull%7D&pData%5B6%5D%5Bname%5D=MultiAllowanceDetailOriginalValues&pData%5B7%5D%5Bvalue%5D=00000000-0000-0000-0000-000000000000&pData%5B7%5D%5Bname%5D=MultiAllowanceDetailTargetRecordID&pData%5B8%5D%5Bvalue%5D=false&pData%5B8%5D%5Bname%5D=MultiAllowanceDetailIsHasDataChange&pData%5B9%5D%5Bvalue%5D=TH012&pData%5B9%5D%5Bname%5D=MultiAllowanceDetailEmployeeCode&pData%5B10%5D%5Bvalue%5D=%25&pData%5B10%5D%5Bname%5D=MultiAllowanceDetailSubmitRole&pData%5B11%5D%5Bvalue%5D=MultiAllowanceDetail&pData%5B11%5D%5Bname%5D=MultiAllowanceDetailScreenName&pData%5B12%5D%5Bvalue%5D=false&pData%5B12%5D%5Bname%5D=MultiAllowanceDetailIsSingle&pData%5B13%5D%5Bvalue%5D=false&pData%5B13%5D%5Bname%5D=MultiAllowanceDetailIsHR&pData%5B14%5D%5Bvalue%5D=true&pData%5B14%5D%5Bname%5D=MultiAllowanceDetailCanAddNew&pData%5B15%5D%5Bvalue%5D=0001-01-01T00%3A00%3A00&pData%5B15%5D%5Bname%5D=MultiAllowanceDetailDateStart&pData%5B16%5D%5Bvalue%5D=0001-01-01T00%3A00%3A00&pData%5B16%5D%5Bname%5D=MultiAllowanceDetailDateStartUI&pData%5B17%5D%5Bvalue%5D=&pData%5B17%5D%5Bname%5D=MultiAllowanceDetailAttachmentID&pData%5B18%5D%5Bvalue%5D=&pData%5B18%5D%5Bname%5D=MultiAllowanceDetailSubmitterRequest&pData%5B19%5D%5Bvalue%5D=&pData%5B19%5D%5Bname%5D=MultiAllowanceDetailSkillCodeUI&pData%5B20%5D%5Bvalue%5D=&pData%5B20%5D%5Bname%5D=MultiAllowanceDetailSkillCode&pData%5B21%5D%5Bvalue%5D=%5Bobject+Object%5D&pData%5B21%5D%5Bname%5D=MultiAllowanceDetailMultiDetailRecord&pData%5B22%5D%5Bvalue%5D=TblRecurring&pData%5B22%5D%5Bname%5D=MultiAllowanceDetailTargetTableName&pData%5B23%5D%5Bvalue%5D=&pData%5B23%5D%5Bname%5D=MultiAllowanceDetailKeyFields&pData%5B24%5D%5Bvalue%5D=PSMultiAllowanceDetail&pData%5B24%5D%5Bname%5D=MultiAllowanceDetailSelectionName&pData%5B25%5D%5Bvalue%5D=&pData%5B25%5D%5Bname%5D=MultiAllowanceDetailOld&pData%5B26%5D%5Bvalue%5D=&pData%5B26%5D%5Bname%5D=MultiAllowanceDetailAdditionalMessages&pData%5B27%5D%5Bvalue%5D=787b382e-bf20-f011-bad0-06d40d699a17&pData%5B27%5D%5Bname%5D=RecordID&pData%5B28%5D%5Bvalue%5D=9d89fc50-861b-4cac-a6c5-be37344cd19b&pData%5B28%5D%5Bname%5D=RequestID&pData%5B29%5D%5Bvalue%5D=00000000-0000-0000-0000-000000000000&pData%5B29%5D%5Bname%5D=PreviousRecordID&pData%5B30%5D%5Bvalue%5D=TH012&pData%5B30%5D%5Bname%5D=EmployeeCode&pData%5B31%5D%5Bvalue%5D=%25&pData%5B31%5D%5Bname%5D=SubmitRole&pData%5B32%5D%5Bvalue%5D=&pData%5B32%5D%5Bname%5D=QuestCode&pData%5B33%5D%5Bvalue%5D=&pData%5B33%5D%5Bname%5D=WorkflowSessionKey&pData%5B34%5D%5Bvalue%5D=&pData%5B34%5D%5Bname%5D=MultiManagerDetailOriginalValues&pData%5B35%5D%5Bvalue%5D=&pData%5B35%5D%5Bname%5D=MultiManagerDetailRecordID&pData%5B36%5D%5Bvalue%5D=*&pData%5B36%5D%5Bname%5D=StatusChangeReasonCodes&pData%5B37%5D%5Bvalue%5D=&pData%5B37%5D%5Bname%5D=Justification&pData%5B38%5D%5Bvalue%5D=&pData%5B38%5D%5Bname%5D=NextApproverEC&pData%5B39%5D%5Bname%5D=QuestFormData&pScreenChange=%5B%22MultiAllowanceDetail%22%2C%22MultiAllowanceDetail%22%5D&pEmployeeCode=TH012&pRole=%25&pWorkflowAction=Approve&pRecordID=787b382e-bf20-f011-bad0-06d40d699a17&pReasonCode=&pRequestID=9d89fc50-861b-4cac-a6c5-be37344cd19b&pIsHR=false&pFormData=&pNextApprover=' | |
decode it to make it able parsed as JSON |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type DecodedValue = string | number | boolean | object | null | undefined; | |
type DecodedObject = { | |
[key: string]: DecodedValue | DecodedValue[] | DecodedObject; | |
}; | |
function parseUrlEncodedData(encodedString: string): DecodedObject { | |
const decoded = decodeURIComponent(encodedString); | |
const params = new URLSearchParams(decoded); | |
const result: DecodedObject = {}; | |
const parseValue = (value: string): DecodedValue => { | |
if (value === '') return ''; | |
if (value === 'null') return null; | |
if (value === 'undefined') return undefined; | |
if (value === 'true') return true; | |
if (value === 'false') return false; | |
// check is number | |
if (!isNaN(Number(value)) && value.trim() === '') return Number(value); | |
try { | |
return JSON.parse(value); | |
} catch { | |
return value; | |
} | |
}; | |
params.forEach((value, key) => { | |
let current: any = result; | |
const parsedValue = parseValue(value); | |
const keys = key.split(/[\[\]]/).filter((k) => k !== ''); | |
keys.forEach((k, i) => { | |
// last key - set value | |
if (i === keys.length - 1) { | |
// handle array indices | |
if (!isNaN(Number(k))) { | |
if (!Array.isArray(current)) { | |
current = []; | |
} | |
current[Number(k)] = parsedValue; | |
} else { | |
current[k] = parsedValue; | |
} | |
} | |
// not last key - navigate the structure | |
else { | |
const nextKey = keys[i + 1]; | |
const isNextKeyNumeric = !isNaN(Number(nextKey)); | |
// init next key level if needed | |
if (!current[k]) { | |
current[k] = isNextKeyNumeric ? [] : {}; | |
} | |
// to next level | |
current = current[k]; | |
} | |
}); | |
}); | |
return result; | |
} | |
let encodedData = | |
'pData%5B0%5D%5Bvalue%5D=&pData%5B0%5D%5Bname%5D=MultiAllowanceDetailOriginalEmployeeMultiAllowanceRecordList&pData%5B1%5D%5Bvalue%5D=MultiAllowanceDetail&pData%5B1%5D%5Bname%5D=MultiAllowanceDetailItemCode&pData%5B2%5D%5Bvalue%5D=true&pData%5B2%5D%5Bname%5D=MultiAllowanceDetailHasMultipleRecord&pData%5B3%5D%5Bvalue%5D=00000000-0000-0000-0000-000000000000&pData%5B3%5D%5Bname%5D=MultiAllowanceDetailRecordID&pData%5B4%5D%5Bvalue%5D=787b382e-bf20-f011-bad0-06d40d699a17&pData%5B4%5D%5Bname%5D=MultiAllowanceDetailParentRecordID&pData%5B5%5D%5Bvalue%5D=A&pData%5B5%5D%5Bname%5D=MultiAllowanceDetailDataChangeType&pData%5B6%5D%5Bvalue%5D=%7B%22OriginalEmployeeMultiAllowanceRecordList%22%3A%5B%7B%22RecordID%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22TargetRecordID%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22ParentRecordID%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22AllowanceCode%22%3A%22%23AR_BASC%22%2C%22DateStart%22%3A%222018-02-23T00%3A00%3A00%22%2C%22DateEnd%22%3A%220001-01-01T00%3A00%3A00%22%2C%22Quantity%22%3A12345%2C%22CurrencyCode%22%3A%22%22%2C%22RunType%22%3A%22M%22%2C%22PayRunBatch%22%3A%22%22%2C%22DetailRemarks%22%3A%22%22%2C%22DataChangeType%22%3Anull%2C%22EmployeeCode%22%3A%22TH012%22%2C%22PSMultiAllowanceRecordID%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22PSMultiAllowanceRecordIDOriginal%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22EmployeeCodeOriginal%22%3A%22TH012%22%2C%22TargetRecordIDOriginal%22%3A%22d524d01f-1983-e811-99c4-f430b99edb31%22%2C%22ParentRecordIDOriginal%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22AllowanceCodeOriginal%22%3A%22%23AR_BASC%22%2C%22DateStartOriginal%22%3A%222018-02-23T00%3A00%3A00%22%2C%22DateEndOriginal%22%3A%220001-01-01T00%3A00%3A00%22%2C%22QuantityOriginal%22%3A12345%2C%22CurrencyCodeOriginal%22%3A%22%22%2C%22RunTypeOriginal%22%3A%22M%22%2C%22PayRunBatchOriginal%22%3A%22%22%2C%22DetailRemarksOriginal%22%3A%22%22%2C%22Old%22%3Anull%2C%22AdditionalMessages%22%3Anull%7D%5D%2C%22ItemCode%22%3A%22MultiAllowanceDetail%22%2C%22HasMultipleRecord%22%3Atrue%2C%22RecordID%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22ParentRecordID%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22DataChangeType%22%3A%22A%22%2C%22OriginalValues%22%3Anull%2C%22TargetRecordID%22%3A%2200000000-0000-0000-0000-000000000000%22%2C%22IsHasDataChange%22%3Afalse%2C%22EmployeeCode%22%3A%22TH012%22%2C%22SubmitRole%22%3A%22%22%2C%22ScreenName%22%3A%22MultiAllowanceDetail%22%2C%22IsSingle%22%3Afalse%2C%22IsHR%22%3Afalse%2C%22CanAddNew%22%3Atrue%2C%22DateStart%22%3A%220001-01-01T00%3A00%3A00%22%2C%22DateStartUI%22%3A%220001-01-01T00%3A00%3A00%22%2C%22AttachmentID%22%3Anull%2C%22SubmitterRequest%22%3Anull%2C%22SkillCodeUI%22%3Anull%2C%22SkillCode%22%3Anull%2C%22MultiDetailRecord%22%3Anull%2C%22PSCAccess%22%3A%7B%22RetrieveLatestData%22%3Afalse%2C%22RequireApproval%22%3Anull%2C%22ScreenName%22%3A%22MultiAllowanceDetail%22%2C%22ScreenAccess%22%3A%22*%22%2C%22SubmissionMessage%22%3A%22%22%2C%22RequireAcknowledgement%22%3A%22%22%2C%22Sequence%22%3A3%2C%22Enabled%22%3Atrue%2C%22RestrictModify%22%3Afalse%2C%22AllowAttachment%22%3A%22%22%2C%22AttachmentRequiredCountryCodes%22%3A%22%22%2C%22AttachmentOptionalCountryCodes%22%3A%22%22%2C%22RestrictDelete%22%3Afalse%2C%22AttachmentAccess%22%3A%22%22%2C%22LatestDetail%22%3Afalse%2C%22CountryCodes%22%3A%22%22%2C%22TagField%22%3A%22%22%2C%22Caption%22%3Anull%2C%22HasWritableField%22%3Afalse%2C%22HasReadableField%22%3Afalse%2C%22Name%22%3Anull%2C%22AllowAttachmentRequired%22%3Anull%2C%22AllowAttachmentOptional%22%3Anull%2C%22AllowAttachmentNotAvailable%22%3Anull%2C%22DisplayScreenName%22%3A%22MultiAllowanceDetail%22%2C%22Old%22%3Anull%2C%22AdditionalMessages%22%3Anull%7D%2C%22TargetTableName%22%3A%22TblRecurring%22%2C%22KeyFields%22%3A%5B%5D%2C%22SelectionName%22%3A%22PSMultiAllowanceDetail%22%2C%22Old%22%3Anull%2C%22AdditionalMessages%22%3Anull%7D&pData%5B6%5D%5Bname%5D=MultiAllowanceDetailOriginalValues&pData%5B7%5D%5Bvalue%5D=00000000-0000-0000-0000-000000000000&pData%5B7%5D%5Bname%5D=MultiAllowanceDetailTargetRecordID&pData%5B8%5D%5Bvalue%5D=false&pData%5B8%5D%5Bname%5D=MultiAllowanceDetailIsHasDataChange&pData%5B9%5D%5Bvalue%5D=TH012&pData%5B9%5D%5Bname%5D=MultiAllowanceDetailEmployeeCode&pData%5B10%5D%5Bvalue%5D=%25&pData%5B10%5D%5Bname%5D=MultiAllowanceDetailSubmitRole&pData%5B11%5D%5Bvalue%5D=MultiAllowanceDetail&pData%5B11%5D%5Bname%5D=MultiAllowanceDetailScreenName&pData%5B12%5D%5Bvalue%5D=false&pData%5B12%5D%5Bname%5D=MultiAllowanceDetailIsSingle&pData%5B13%5D%5Bvalue%5D=false&pData%5B13%5D%5Bname%5D=MultiAllowanceDetailIsHR&pData%5B14%5D%5Bvalue%5D=true&pData%5B14%5D%5Bname%5D=MultiAllowanceDetailCanAddNew&pData%5B15%5D%5Bvalue%5D=0001-01-01T00%3A00%3A00&pData%5B15%5D%5Bname%5D=MultiAllowanceDetailDateStart&pData%5B16%5D%5Bvalue%5D=0001-01-01T00%3A00%3A00&pData%5B16%5D%5Bname%5D=MultiAllowanceDetailDateStartUI&pData%5B17%5D%5Bvalue%5D=&pData%5B17%5D%5Bname%5D=MultiAllowanceDetailAttachmentID&pData%5B18%5D%5Bvalue%5D=&pData%5B18%5D%5Bname%5D=MultiAllowanceDetailSubmitterRequest&pData%5B19%5D%5Bvalue%5D=&pData%5B19%5D%5Bname%5D=MultiAllowanceDetailSkillCodeUI&pData%5B20%5D%5Bvalue%5D=&pData%5B20%5D%5Bname%5D=MultiAllowanceDetailSkillCode&pData%5B21%5D%5Bvalue%5D=%5Bobject+Object%5D&pData%5B21%5D%5Bname%5D=MultiAllowanceDetailMultiDetailRecord&pData%5B22%5D%5Bvalue%5D=TblRecurring&pData%5B22%5D%5Bname%5D=MultiAllowanceDetailTargetTableName&pData%5B23%5D%5Bvalue%5D=&pData%5B23%5D%5Bname%5D=MultiAllowanceDetailKeyFields&pData%5B24%5D%5Bvalue%5D=PSMultiAllowanceDetail&pData%5B24%5D%5Bname%5D=MultiAllowanceDetailSelectionName&pData%5B25%5D%5Bvalue%5D=&pData%5B25%5D%5Bname%5D=MultiAllowanceDetailOld&pData%5B26%5D%5Bvalue%5D=&pData%5B26%5D%5Bname%5D=MultiAllowanceDetailAdditionalMessages&pData%5B27%5D%5Bvalue%5D=787b382e-bf20-f011-bad0-06d40d699a17&pData%5B27%5D%5Bname%5D=RecordID&pData%5B28%5D%5Bvalue%5D=9d89fc50-861b-4cac-a6c5-be37344cd19b&pData%5B28%5D%5Bname%5D=RequestID&pData%5B29%5D%5Bvalue%5D=00000000-0000-0000-0000-000000000000&pData%5B29%5D%5Bname%5D=PreviousRecordID&pData%5B30%5D%5Bvalue%5D=TH012&pData%5B30%5D%5Bname%5D=EmployeeCode&pData%5B31%5D%5Bvalue%5D=%25&pData%5B31%5D%5Bname%5D=SubmitRole&pData%5B32%5D%5Bvalue%5D=&pData%5B32%5D%5Bname%5D=QuestCode&pData%5B33%5D%5Bvalue%5D=&pData%5B33%5D%5Bname%5D=WorkflowSessionKey&pData%5B34%5D%5Bvalue%5D=&pData%5B34%5D%5Bname%5D=MultiManagerDetailOriginalValues&pData%5B35%5D%5Bvalue%5D=&pData%5B35%5D%5Bname%5D=MultiManagerDetailRecordID&pData%5B36%5D%5Bvalue%5D=*&pData%5B36%5D%5Bname%5D=StatusChangeReasonCodes&pData%5B37%5D%5Bvalue%5D=&pData%5B37%5D%5Bname%5D=Justification&pData%5B38%5D%5Bvalue%5D=&pData%5B38%5D%5Bname%5D=NextApproverEC&pData%5B39%5D%5Bname%5D=QuestFormData&pScreenChange=%5B%22MultiAllowanceDetail%22%2C%22MultiAllowanceDetail%22%5D&pEmployeeCode=TH012&pRole=%25&pWorkflowAction=Approve&pRecordID=787b382e-bf20-f011-bad0-06d40d699a17&pReasonCode=&pRequestID=9d89fc50-861b-4cac-a6c5-be37344cd19b&pIsHR=false&pFormData=&pNextApprover='; | |
encodedData = | |
'simple=value&array[0]=first&array[1]=second&obj[key]=value&nested[obj][key]=deep'; | |
encodedData = 'numbers=123&boolean=true&json=%7B%22key%22%3A%22value%22%7D'; | |
const decodedData = parseUrlEncodedData(encodedData); | |
console.log(decodedData); | |
/* | |
{ | |
simple: "value", | |
array: ["first", "second"], | |
obj: { key: "value" }, | |
nested: { obj: { key: "deep" } } | |
} | |
*/ | |
/* | |
{ | |
"numbers": 123, | |
"boolean": true, | |
"json": { | |
"key": "value" | |
} | |
} | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment