You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Dart/Flutter中如何将非标准JSON字符串转换为标准JSON格式?

非标准JSON转标准JSON的实现方案

针对输入的非标准JSON字符串(键和字符串值未用双引号包裹):

{authToken: msadnmsandnasdn}

转换为标准JSON格式:

{"authToken": "msadnmsandnasdn"}

以下是几种可行的实现方案:

1. 正则表达式替换(通用轻量方案)

通过正则匹配未加引号的键和值,替换为带双引号的格式,适合结构简单的场景:

Python示例

import re

non_standard = "{authToken: msadnmsandnasdn}"
# 为键添加双引号
key_fixed = re.sub(r'(\w+)(?=\:)', r'"\1"', non_standard)
# 为值添加双引号
standard_json = re.sub(r'(?<=\:)\s*(\w+)(?=\}|,)', r' "\1"', key_fixed)

print(standard_json)

JavaScript示例

const nonStandard = '{authToken: msadnmsandnasdn}';
const keyFixed = nonStandard.replace(/(\w+)(?=\:)/g, '"$1"');
const standardJson = keyFixed.replace(/(?<=\:)\s*(\w+)(?=\}|,)/g, ' "$1"');

console.log(standardJson);

2. 专用库解析(健壮方案)

如果涉及复杂的非标准JSON(含特殊字符、嵌套结构等),推荐使用支持宽松JSON解析的专用库:

Python:使用demjson

先安装依赖:

pip install demjson

代码实现:

import demjson

non_standard = "{authToken: msadnmsandnasdn}"
# 解析非标准JSON为Python对象,再序列化为标准JSON
standard_json = demjson.encode(demjson.decode(non_standard))
print(standard_json)

JavaScript:使用json5

先安装依赖:

npm install json5

代码实现:

const JSON5 = require('json5');

const nonStandard = '{authToken: msadnmsandnasdn}';
const standardJson = JSON.stringify(JSON5.parse(nonStandard));
console.log(standardJson);

3. JavaScript快速方案(仅信任输入时使用)

如果能确保输入安全无恶意代码,可以用eval配合JSON.stringify快速转换:

const nonStandard = '{authToken: msadnmsandnasdn}';
const standardJson = JSON.stringify(eval(`(${nonStandard})`));
console.log(standardJson);

内容的提问来源于stack exchange,提问作者Dhaval Chaudhari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:35:26