Flutter中如何将字符串转换为JSON
把非标准对象结构转成标准JSON的方法
嘿,这个问题我碰到过好几次了!要把你给的{id: produk12549, nama: Abcd, url: myUrl}这种非标准结构转成合法的JSON格式,其实有几种实用的方案,我给你详细说说:
1. 手动修改(适合少量内容)
这是最直接的方式,因为标准JSON有两个核心要求:
- 所有键必须用双引号包裹
- 字符串类型的值也必须用双引号包裹
照着这个规则修改就行:
原内容:
{id: produk12549, nama: Abcd, url: myUrl}
修改后:{"id": "produk12549", "nama": "Abcd", "url": "myUrl"}
2. 正则批量替换(适合大量文本)
如果有一堆这种格式的内容,手动改太麻烦,用文本编辑器(比如VS Code、Sublime Text)的正则查找替换功能就能快速搞定:
步骤:
第一步:给所有键加上双引号
- 查找:
(\w+): - 替换:
"$1":
这个正则会匹配冒号前的标识符(比如id、nama),把它们替换成带双引号的键。
- 查找:
第二步:给字符串值加上双引号
- 查找:
: (\w+)([,}]) - 替换:
: "$1"$2
这个正则会匹配冒号后到逗号/右大括号的标识符(比如produk12549、Abcd),给它们加上双引号,同时保留后面的逗号或大括号。
- 查找:
3. 代码自动化处理(适合程序场景)
如果需要在代码里自动转换,可以用编程语言来处理,这里举两个常用的例子:
Python 实现
用ast模块安全解析非标准结构,再转成JSON:
import ast import json # 你的原始字符串 raw_content = "{id: produk12549, nama: Abcd, url: myUrl}" # 转成Python字典 parsed_data = ast.literal_eval(raw_content) # 生成标准JSON字符串 standard_json = json.dumps(parsed_data, indent=2) print(standard_json)
运行后会输出:
{ "id": "produk12549", "nama": "Abcd", "url": "myUrl" }
JavaScript/Node.js 实现
用正则先格式化字符串,再解析成JSON对象:
const rawStr = "{id: produk12549, nama: Abcd, url: myUrl}"; // 用正则给键和值加双引号 const formattedStr = rawStr .replace(/(\w+):/g, '"$1":') .replace(/: (\w+)([,}])/g, ': "$1"$2'); // 解析成JSON对象并输出格式化后的字符串 const jsonObj = JSON.parse(formattedStr); console.log(JSON.stringify(jsonObj, null, 2));
注意事项
如果你的值里包含空格、特殊字符,正则可能需要调整,但你给出的例子里都是纯字母数字的标识符,上面的方法完全适用。
内容的提问来源于stack exchange,提问作者user18223348
相关产品推荐
相关产品推荐

