对象转JSON格式,属性的引号如何处理掉

对象转为JSON格式后,属性带着双引号,如何把属性的双引号处理掉

阅读 3.6k
3 个回答

由于各种不确定性,通过正则的方式去掉双引号出错的概率太高了,所以不建议这样做,@mycn 。例如{"attribute-list": ['name', 'size']}
属性是否带有双引号并不影响解析,只是长度问题而已,解决长度问题可以考虑压缩,去双引号才能减少几个字长。
实在想做也是自己重新实现这个方法而不是对字符串做修改。

const obj = {
    name: 'joe',
    age: 18
}
const str1 = JSON.stringify(obj).replace(/":/g, ':').replace(/,"/g, ',').replace(/{"/g, '{')
const str2 = '{' + JSON.stringify(obj).substring(1).split(',').map(i => i.split(':')).map(([k, v]) => ([k.substring(1, k.length - 1), v]).join(':')).join(',')


function conObj(str: string) {
    try {
        return JSON.parse(str)
    } catch {
        return eval(`(${str})`)
    }
}

console.log(str1, str2)
console.log(conObj(str1), conObj(JSON.stringify(obj)))

属性除非是数值或者布尔值,否则一般都需要带引号的,这是必须的,否则就是json数据格式出错,不再支持被解析啦。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题