djangoapi jsonfield获取一个我无法使用.map解析的对象,然后构建图表

问题描述 投票:0回答:1

I有一个django序列化的API字段,该字段包含创建图表的数据库JSONFIELD数据(确认此数据可以在我的烧瓶后端工作),但是我无法使用从DjangoAPI

中获取的相同数据

''

//    data.data.linechart: "[{'index': 129, 'Strategy': 28.893}, {'index': 1304, 'Strategy': 33.331}]"

fetch(url)
        .then(response => response.json())
        .then(data => {

        var dataArray = Object.keys(data.data.linechart).map(function(key) {
            return [key, data.data.linechart[key]];
          });

          // Convert the array of key-value pairs to a format that supports map
          var mapData = dataArray.map(function(item) {
            return { index: item[0], Strategy: item[1] };
          });

          const series = [
            {
              name: 'Strategy',
              data: mapData
            }
          ];

    //Apex Chart
    var optionsChart = {
        series: [{
            name: 'New Data',
            data: series 
        }],

我在这里错过了什么?

取出将序列化的API数据作为对象提取 - 上面的转换不起作用。 其他人看过同样的问题?

我尝试过:

    JSON.PARSE(数据),
  1. JSON.STRINGIFY(数据),
  2. 下括号:const dataarray = data2.data.linechart.replace('[',',').replace('],'');
  3. Changing Data.data.linechart到data.data,然后隔离linechart =“ [{'index':129,'策略':28.893},{'index':1304,'策略':33.331}]”
  4. 但是我不能从对象转换图表数据JSON-而无需将JSON字符串分为单个字符...

答案是耐心。当然,现在我知道如何处理答案。
json django serialization django-rest-framework apexcharts
1个回答
0
投票

next,我在数据库中发现JSON是单引号 认可,请参阅下面的双引号的修复程序 - 和@serhii Fomenko 指出了一个可能起作用的json.dumps解决方案。

文本。重新允许我到JSON.PARSE-步骤3。 阵列。
  • 希望这有帮助...
  • ''
  • fetch(url) .then(response => response.json()) .then(data => { console.log("data", data); console.log("jsonchartData", data.data.jsonchartData); // test that JSONdata is a string console.log("jsonchartData tests", typeof data.data.jsonchartData, typeof JSON.stringify(data.data.jsonchartData)); var lineChartData = data.data.jsonchartData; // parsing this string requires double-quotes, not single lineChartData = lineChartData.replace(/'/g, '"'); console.log('JSON string:', lineChartData); try { var parsedData = JSON.parse([lineChartData]); // this creates an array that can be mapped console.log('Parsed data:', parsedData); if (Array.isArray(parsedData)) { console.log('Parsed data is an array'); var xLabel = parsedData.map(d => d.xLabel); var yLabel = parsedData.map(d => parseFloat(d.yLabel.toFixed(2))); console.log("xLabel", xLabel); console.log("yLabel", yLabel); } else { console.log('Parsed data is not an array'); } } catch (e) { console.error('Error parsing JSON:', e); }

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.