将对象序列化到uri而不转义字符

时间:2019-05-11 09:41:23

标签: javascript reactjs

我想序列化对象到uri,其中javascript中没有空格字符。

如果我有对象

foo={
  name:'omkar asish',
  type:'person'
};

序列化-> foo

观察结果:name=omkar%20Aasish&type=person 预期结果:name=omkar asish&type=person

我使用过toQueryString(),它在内部使用encodedURIComponent,因此我仍然得到编码的转义字符。

我还使用了仍然提供相同结果的查询字符串模块。

更新 foo对象有时包含带有underscore的键 例如:foo = { 名称:“ omkar”, 类型:“人” }

OR

foo = { _name:“ omkar”, _id = 1 }

我只想从您的表达式中过滤下划线,而不必考虑密钥

1 个答案:

答案 0 :(得分:0)

我知道一定有更好的方法,但是仅仅因为我非常爱reduce

let foo = {
  name:'omkar asish',
  type:'person'
}

const keys = Object.keys(foo)
let res = keys.reduce((acc, cur,i) => `${acc}${cur}=${foo[cur]}${++i < keys.length ? '&' : ''}`, '')

console.log(res)

或者,如果您想为此提供功能:

function serialize(obj) {
  const keys = Object.keys(obj);
  return keys.reduce((acc, cur,i) => `${acc}${cur}=${obj[cur]}${++i < keys.length ? '&' : ''}`, '')
}

console.log(serialize({hello: 'world', it: 'works'}))