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

C3 donut环形图使用JSON解析的columns数据无法正常渲染问题

问题原因
  • 你原始JSON字符串中theatres对应的值是被双引号包裹的字符串,不是原生数组结构,外层JSON.parse(txt)执行后,theatres变量拿到的是字符串,不是C3要求的二维数组类型,所以渲染失败。控制台打印时看起来像数组,只是字符串打印的视觉效果和数组类似,本质类型完全不同。
解决步骤
  1. 先把theatres字符串里的单引号替换为双引号,符合JSON语法规范
  2. 对处理后的字符串二次执行JSON.parse,转成真正的二维数组
  • 可选优化:如果可以调整原始JSON的生成逻辑,直接把theatres字段设为数组类型,不用包裹为字符串,就不需要前端额外做二次解析处理。
修正后代码
const txt = '{"theatres":"[[\'AMER INT\',386],[\'AMER US\',464],[\'APAC\',914],[\'EMEA\',706],[\'JP\',81]]","title":"94 Countries"}';

const dataobj = JSON.parse(txt);

// 新增两行处理theatres字符串
var theatresStr = dataobj.theatres.replaceAll("'", '"');
var theatres = JSON.parse(theatresStr);
var title = dataobj.title;

var chart = c3.generate({
    bindto: '#chart',
    data: {
        type: 'donut',
        columns: theatres
    },
    size: {
        height: 800
    },
    donut: {
        title: title
    }
});

如果运行环境不支持replaceAll,可以替换为正则写法:var theatresStr = dataobj.theatres.replace(/'/g, '"');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 13:24:02