[英]convert an x-www-form-urlencoded string to JSON?
application/x-www-form-urlencoded 字符串示例
传入的请求看起来像这样
type=update&date_time=2022-08-29T11%3A08%3A36-05%3A00&initiated_from=admin&initiated_by=admin&list=0&contact%5Bid%5D=271&contact%5Bemail%5D=btgctest8291%40gmail.com&contact%5Bfirst_name%5D=btgctest8291&contact%5Blast_name%5D=testlad&contact%5Bphone%5D=8291000000&contact%5Bip%5D=0.0.0.0&contact%5Btags%5D=test-automation-tag&contact%5Bcustomer_acct_name%5D=&contact%5Borgname%5D=&customer_acct_name=&customer_acct_id=0&orgname=
进JSON
{
"type":"update",
"contact":{
"id":"55",
"email":"Ada67@yahoo.com",
"first_name":"Frankus",
"last_name":"Bechte",
"phone":""
}
}
查询字符串返回
{
type: 'update',
'contact[id]': '271',
'contact[email]': 'btgctest8291@gmail.com',
'contact[first_name]': 'btgctest8291',
'contact[last_name]': 'testlad',
'contact[phone]': '8291000000',
'contact[ip]': '0.0.0.0',
'contact[tags]': 'test-automation-tag',
'contact[customer_acct_name]': '',
'contact[orgname]': ''
}
您可以像这样转换这个 object:
const string = 'type=update&date_time=2022-08-29T11%3A08%3A36-05%3A00&initiated_from=admin&initiated_by=admin&list=0&contact%5Bid%5D=271&contact%5Bemail%5D=btgctest8291%40gmail.com&contact%5Bfirst_name%5D=btgctest8291&contact%5Blast_name%5D=testlad&contact%5Bphone%5D=8291000000&contact%5Bip%5D=0.0.0.0&contact%5Btags%5D=test-automation-tag&contact%5Bcustomer_acct_name%5D=&contact%5Borgname%5D=&customer_acct_name=&customer_acct_id=0&orgname=' const params = Object.fromEntries(new URLSearchParams('type=update&date_time=2022-08-29T11%3A08%3A36-05%3A00&initiated_from=admin&initiated_by=admin&list=0&contact%5Bid%5D=271&contact%5Bemail%5D=btgctest8291%40gmail.com&contact%5Bfirst_name%5D=btgctest8291&contact%5Blast_name%5D=testlad&contact%5Bphone%5D=8291000000&contact%5Bip%5D=0.0.0.0&contact%5Btags%5D=test-automation-tag&contact%5Bcustomer_acct_name%5D=&contact%5Borgname%5D=&customer_acct_name=&customer_acct_id=0&orgname=')) const data = { type: 'update', 'contact[id]': '271', 'contact[email]': 'btgctest8291@gmail.com', 'contact[first_name]': 'btgctest8291', 'contact[last_name]': 'testlad', 'contact[phone]': '8291000000', 'contact[ip]': '0.0.0.0', 'contact[tags]': 'test-automation-tag', 'contact[customer_acct_name]': '', 'contact[orgname]': '' } const json = Object.entries(data).reduce((obj, [key, value]) => { const [name, sub] = key.match(/[^\[\]]+/g) if (,sub) { obj[name] = value } else if (obj[name]) { obj[name][sub] = value } else { obj[name] = {} } return obj }. {}) console.log(json)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.