当前位置: 首页 > 知识库问答 >
问题:

使用Chart.js解析外部JSON文件中的值

王才
2023-03-14

我用C创建了一个简单的饼图hart.js.我想把它链接到我电脑上的一个JSON文件,它在同一个本地文件夹中。然后,我希望JSON文件中的数据显示在我的饼图上,而不是直接从脚本中获取。

我该怎么做呢?这是我的密码。

  <script>
    var ctx = document.getElementById("myDoughnutChart");
    var myDoughnutChart = new Chart(ctx, {
        type: 'doughnut',
            data: {
                labels: ["Blue", "Red", "Green", "Orange", "Light Blue"],
            datasets: [{
                backgroundColor: ["#0074D9", "#FF4136", "#2ECC40", "#FF851B", "#7FDBFF"],
                    data: [12, 19, 3, 5, 2],
                    }]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                showAllTooltips: true,
                title: {
                    display: true,
                    text: "Responsive test"
                    },
                legend: {
                    display: false,
                    fullWidth: true,
                    labels: {
                    boxWidth: [50]
                    },
                }
            }
        });
    </script>

这是我的JSON文件,保存在“chart.JSON”下-我不确定这是否是正确的格式,因为我是一个真正的新手。

{"jsonarray": [{
    "Color": "Blue",
    "Value": 12}, 
    {
    "Color": "Red",
    "Value": 19}, 
    {
    "Color": "Green",
    "Value": 3}, 
    {
    "Color": "Orange",
    "Value": 5}, 
    {
    "Color": "Light Blue",
    "Value": 2}]
};

我理解解析JSON文件的必要性,但我不知道该怎么做——提前非常感谢。

共有2个答案

喻高寒
2023-03-14

json文件大部分是时间字符串类型,因此您要生成的图表我认为它需要一种数字类型,因此您需要在此处将json数据转换为数字时间检查,如果您正确解析json,请在此处检查其已回答的内容,您就可以了。

况博容
2023-03-14

这里有几个部分。

我喜欢用Fetch。如果使用jQuery,还可以使用$.ajax。假设该文件与JS代码位于同一目录中,并且名为chart.json

  fetch('./chart.json')
    .then(function (response) {
      return response.json();
    }).then(function (json) {
      // drawChart fn to be created...see below
      drawChart(json);
    }).catch(function (error) {
      console.error(error);
    });

请注意,如果您在本地运行此代码,如果您试图直接从文件系统访问网站(如文件:///

相反,您可以轻松地运行本地服务器。转到终端中包含文件的目录,然后运行:

python -m SimpleHTTPServer 8000

php -S localhost:8000

这将提供端口8000上的当前目录。然后参观http://localhost:8000/

另外,确保JSON是有效的(末尾没有分号!)。

我们正在尝试制作两个阵列。一个带有数字表示数据,一个带有字符串表示标签。

您可以使用map轻松完成此操作:

var graphData = json.jsonarray.map(e => e.Color);
// ["Blue", "Red", "Green", "Orange", "Light Blue"]
var graphLabels = json.jsonarray.map(e => e.Value);
// [12, 19, 3, 5, 2]
window.addEventListener("DOMContentLoaded", draw);
function draw() {
  // Get the json file with fetch or $.ajax
  // Pass the json data to drawChart
}
function drawChart(jsonData) {
  /* get graphData and graphLabels
  draw chart with your existing code
  pass graphData and graphLabels in place of
  the hard-coded labels and data in your Chart initialization */
}

现在,这段代码只支持一个数据集。backgroundColor数组是固定的,因此如果没有精确的5个值,一些背景颜色将是ChartJS的默认灰色。

可以进一步抽象图形代码以支持多个数据集

 类似资料:
  • 问题内容: 我想使用 GSON* 在 JAVA中 解析此 JSON 文件: *** 但是我不知道如何加入root元素: 描述符 ,之后是 app3 元素,最后是 name 元素。 我遵循了本教程http://www.mkyong.com/java/gson-streaming-to-read-and-write- json/ ,但是它没有显示具有root和childs元素的情况。 问题答案: Im

  • 我学习了这个教程http://www.mkyong.com/java/gson-streaming-to-read-and-write-json/,但它没有显示root和childs元素的情况。

  • 我想使用Typescript解析/处理一个25 MB的JSON文件,并过滤/排序对象。。我写的代码花了几分钟(有时会超时),不确定为什么会发生这种情况,或者是否有其他方法可以提高代码的效率。 注意:代码在一个小文件上工作

  • 我正在使用Coingecko API。但我就是无法解析数据。下面是示例数据。解析我要做的每个块。 https://api.coingecko.com/api/v3/exchanges 我使用的示例代码: null null

  • 问题内容: 因此,我坐在这里与Google Geocoder一起,后者通过’GOOGLE_URL / xml?address = input&sensor = false’返回XML。我需要使用Java来获取它,并将其解析为JSON对象并继续发送。 我将如何去做?(不,这不是家庭作业)请注意,最好在标准库中完成。目前,我正在尝试确定是否可以使用例如SAX来完成。 问题答案: 这是一个工作示例,显示

  • 问题内容: 我正在尝试使用Python解析html文件,而不使用任何外部模块。原因是我正在触发jenkins作业,并遇到了lxml和BeautifulSoup的一些导入问题(试图解决该问题,我认为我在进行工程设计的某个方面来完成我的工作) 输入 : 输出 : 我想使用“ suite”类(末尾检查)来获取tr标记的特定块,然后提取零号,零号,零号和passRate套件的值。最后,打印值。 ~ ~ ~