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

如何使用Dart将无引号JSON转换为合法可使用的JSON?

将非标准JSON转为Dart可用合法JSON的最优方法

你从可信第三方获取的非标准JSON内容如下:

{id: 2, name: Test Testerson, course_progress: 0, last_activity_date: null}, {id: 3, name: Poghos Adamyan, course_progress: 0, last_activity_date: null}

针对这种键未加双引号、多对象未包裹为数组的非标准格式,结合Dart特性,最优处理方法如下:

处理步骤

  • 第一步:将多个独立对象包裹为JSON数组,在内容首尾分别添加[和]
  • 第二步:用正则表达式为所有键添加双引号,匹配模式为(\w+):,替换为"$1":
  • 第三步:使用Dart内置的jsonDecode方法解析处理后的合法JSON

完整Dart代码示例

import 'dart:convert';

void main() {
  // 原始非标准JSON字符串
  final rawNonStandardJson = '{id: 2, name: Test Testerson, course_progress: 0, last_activity_date: null}, {id: 3, name: Poghos Adamyan, course_progress: 0, last_activity_date: null}';
  
  // 包裹为数组
  final wrappedAsArray = '[$rawNonStandardJson]';
  
  // 为键添加双引号
  final regex = RegExp(r'(\w+):');
  final validJson = wrappedAsArray.replaceAll(regex, r'"$1":');
  
  // 解析JSON
  final parsedData = jsonDecode(validJson);
  
  // 打印验证结果
  print(parsedData);
}

说明

因为第三方是可信来源,我们可以假设所有键都是由字母、数字、下划线组成的标识符,所以正则(\w+):可以准确匹配所有键。如果后续遇到含特殊字符的键,可以调整正则模式(比如([^:,]+):),但当前场景下上述方法足够高效简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:35:29