uri编码处理

/* 输出:
 * {
 *  name: "coder",
 *  age: "20",
 *  callback: "https://youzan.com?name=test",
 *  list: ["a", "b"],
 *  json: {
 *      str: 'abc',
 *      num: 123
 *  }
 * }
 */
const originUri = 'https://www.youzan.com?name=coder&age=20&callback=https%3A%2F%2Fyouzan.com%3Fname%3Dtest&list[]=a&list[]=b&json=%7B%22str%22%3A%22abc%22,%22num%22%3A123%7D'

function parseQuery(inputUri) {
    const hash = {}
    hash['list'] = []
    const uriStr = decodeURIComponent(inputUri)
    const url = new URL(uriStr)
    for(let u of url.searchParams) {
        try {
            u[1] = JSON.parse(u[1])
        } catch(e) {}
        // 暂时没好的处理方式 先当成特殊标识符处理
        if(u[0] === 'list[]') {
            hash['list'].push(u[1])
        } else {
           hash[u[0]] = u[1]
        }
    }
    return hash
}
parseQuery(originUri)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值