如何使用正则转换 Json 中非字符型的 Key

发布于 2022-09-13 00:38:32 字数 226 浏览 21 评论 0

由于调用第三方API返回的Json不是标准的,如:

{123:321,67:12,"key": "value}

即:纯数字的整型Key没有包裹双引号,导致解析失败。

现在想手动修复一下这个Json,给整型Key加上双引号,如:

{"123":321,"67":12,"key": "value}

请问该如何写?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

美羊羊 2022-09-20 00:38:32

怎么使用正则实现我不清楚,但这里有一个骚操作,实际使用的时候要确保数据的可信,避免被不怀好意的人攻击

const targetJson = `{123:321,67:12,"key": "value"}`
const r =  eval(`(${targetJson})`)

console.log(r)
/**
{
  "67": 12,
  "123": 321,
  "key": "value"
} 
 */
清风无影 2022-09-20 00:38:32

'{123:321,67:12,"key": "value"}'.replace(/\d+(?=:)/g, '\"$&\"')

零宽先找到":"前的数字,然后replace附加上双引号

我是男神闪亮亮 2022-09-20 00:38:32
'{123:321,67:12,"key": "value}'.replaceAll(/\d+(?=:)/g, '"
amp;"')

注意 replaceAll 可能有兼容性问题,可以找下 polyfill ,或者多次replace

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文