【问题标题】:JSON.parse label data from string varJSON.parse 来自字符串 var 的标签数据
【发布时间】:2020-10-02 05:02:41
【问题描述】:

我在下面有 2 个变量来更新我的图表的数据集和标签。

function updateChart(){

   var newdatasets= "[10, 20, 30, 40]";
   var newlabels= "['label1', 'label2', 'label3', 'label4']";

   myChart.data.datasets[0].data = JSON.parse(newdatasets); //this work
   myChart.data.labels = JSON.parse(newlabels);             //this does not work
}

为什么 JSON.parse 可以与 newdatasets 一起使用,但不能与 newlabels 一起使用? JSON.parse(newdatasets) 成功更新图表数据集,但 JSON.parse(newlabels) 未能更新图表标签。我该怎么做才能解决这个问题?

不要让我在没有 " 的情况下将 var 值更改为 ['label1', 'label2', 'label3', 'label4']。我知道这会起作用,但我希望图表从那种 var 值改变。

感谢您的帮助..

【问题讨论】:

    标签: javascript chart.js


    【解决方案1】:

    newlabels 的 JSON 字符串格式错误。让' 改成" 转义。

    这将起作用:

    var newlabels= "[\"label1\", \"label2\", \"label3\", \"label4\"]";
    myChart.data.labels = JSON.parse(newlabels);
    

    变量newdatasetsJSON.parse 一起使用,因为它的元素是数字。

    【讨论】:

    • 为此,您甚至不需要转义,只需使用var newlabels= '["label1", "label2", "label3", "label4"]';
    【解决方案2】:

    要成为有效的 JSON,you need double-quotes。所以下面的代码有效。

    这两个例子都有效。您只需要将双引号作为字符串本身的一部分。

    var newlabels2= '["label1", "label2", "label3", "label4"]';
    console.log(JSON.parse(newlabels2)); 
    
    var newlabels3= "[\"label1\", \"label2\", \"label3\", \"label4\"]";
    console.log(JSON.parse(newlabels3)); 

    【讨论】:

      【解决方案3】:

      JSON 不支持单引号,所以这段代码:

       var newlabels= "['label1', 'label2', 'label3', 'label4']";
      

      变成这样:

       var newlabels= '["label1", "label2", "label3", "label4"]';
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-11
        • 2019-04-03
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 2017-03-19
        • 1970-01-01
        • 2016-05-10
        相关资源
        最近更新 更多