最近写React,需要转JSON,单引号和双引号问题

📅 2026/7/21 16:28:20 👁️ 阅读次数 📝 编程学习
最近写React,需要转JSON,单引号和双引号问题

JSON.parse()不能转换单引号,这一点很崩溃,最开始选择用正则表达式,因为输出的数据里面的单引号需要保留,所以只能打补丁式的转:

          let fixed = genChart// 1. 修复键名的单引号:'key': -> "key":.replace(/'([a-zA-Z0-9_]+)':/g, '"$1":')// 2. 修复字符串值的单引号:: 'value' -> : "value".replace(/:\s*'([^']*)'/g, ':"$1"')// 3. 修复没有引号的键名:key: -> "key":.replace(/([{,])\s*([a-zA-Z0-9_]+)\s*:/g, '$1"$2":');console.log("fixed:", fixed);setOptions(JSON.parse(fixed));

后面发现不行,我的数据里面还会有数组,['','']这种格式它不会转!打补丁不可行,后面还会有很多问题。不过还是将正则表达式改了:

            let fixed = genChart// 1. Quote unquoted keys first (e.g. key: -> "key":).replace(/([{,])\s*([a-zA-Z0-9_]+)\s*:/g, '$1"$2":')// 2. Safely replace single quotes with double quotes anywhere they enclose a value or key.replace(/'([^'\\]*(\\.[^'\\]*)*)'/g, '"$1"');console.log("fixed:", fixed);setOptions(JSON.parse(fixed));

问了一下AI,AI说用JSON5。。。JSON5支持单引号格式转换。

import JSON5 from 'json5';
let fixed = genChart;
console.log("fixed:", fixed);
setOptions(JSON5.parse(fixed));