繁体   English   中英

将 x-www-form-urlencoded 字符串转换为 JSON?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM