【问题标题】:Convert from JSON Array object to Array for highchart?从 JSON 数组对象转换为高图数组?
【发布时间】:2012-10-25 12:52:42
【问题描述】:

我正在使用 highchart 插件开发图表。用于为图表提供动态输入。因此,我需要将 JSON 格式更改为 Array。如何使用 javascript 将 JSON 数组对象格式更改为 Array?

[
        {
            "scoreCount": "108",
            "legendDesc": "Excellent ",
            "colorPatchCode": "#009900"
        },
        {
            "scoreCount": "20",
            "legendDesc": "Fail ",
            "colorPatchCode": "#FF0000"
        }
    ]

转换数组格式,如,

[
        [
            "scoreCount": "108",
            "legendDesc": "Excellent ",
            "colorPatchCode": "#009900"
        ],
        [
            "scoreCount": "20",
            "legendDesc": "Fail ",
            "colorPatchCode": "#FF0000"
        ]
    ]

有人可以帮忙吗?

【问题讨论】:

  • 第二个 sn-p 不是有效的 JavaScript。
  • javascript 中的数组不是键值对,它们只是值。这是不可能的。你想用这个对象数组无法提供的结构做什么?
  • 但我需要这样的输出。
  • @selladurai 输出不能是这样的。请提供目标并尽力提供帮助。
  • 你为什么需要它?你想完成什么需要这种格式?

标签: javascript json


【解决方案1】:
[
            "scoreCount": "108",
            "legendDesc": "Excellent ",
            "colorPatchCode": "#009900"
        ],

不是有效的结构。 数组可以包含单个元素。 native ,或包含另一个项目(属性)或数组的对象。

【讨论】:

  • 我的朋友,作为开发人员,我们应该编写有效的代码。当然,我们可以创建一个包含无效数据的字符串,但它不能互操作。暂时不要想。想想你怎么能以正确的方式做到这一点。我确定您使用的 api 不会强制您编写此无效代码。
  • [[1,2],[3,4]] 与 [[1:2],[3:4]] 非常不同
【解决方案2】:

如果试试这个会怎样:

var arr = [
        {
            "scoreCount": "108",
            "legendDesc": "Excellent ",
            "colorPatchCode": "#009900"
        },
        {
            "scoreCount": "62",
            "legendDesc": "Good ",
            "colorPatchCode": "#99CC00"
        },
        {
            "scoreCount": "55",
            "legendDesc": "Acceptable ",
            "colorPatchCode": "#FFFF00"
        },
        {
            "scoreCount": "31",
            "legendDesc": "Poor ",
            "colorPatchCode": "#FF9900"
        },
        {
            "scoreCount": "20",
            "legendDesc": "Fail ",
            "colorPatchCode": "#FF0000"
        }
    ];

for (i = 0;i<arr.length;i++) {
    var a = [];
    for (n in arr[i]) {
        a[n] = arr[i][n];
    }
    arr[i] = a;
}

for (i = 0;i<arr.length;i++) {
    alert(arr[i]['scoreCount']);
}

【讨论】:

    【解决方案3】:

    http://jsfiddle.net/sPN7z/

    var source = [
        {
            "scoreCount": "108",
            "legendDesc": "Excellent ",
            "colorPatchCode": "#009900"
        },
        {
            "scoreCount": "62",
            "legendDesc": "Good ",
            "colorPatchCode": "#99CC00"
        },
        {
            "scoreCount": "55",
            "legendDesc": "Acceptable ",
            "colorPatchCode": "#FFFF00"
        },
        {
            "scoreCount": "31",
            "legendDesc": "Poor ",
            "colorPatchCode": "#FF9900"
        },
        {
            "scoreCount": "20",
            "legendDesc": "Fail ",
            "colorPatchCode": "#FF0000"
        }
    ];
    
    var out = [];
    
    for (var i = 0; i < source.length; i++) {
        var tmp = [];
        for (var i2 in source[i]) {
            tmp.push(source[i][i2]);
        }
        out.push(tmp);
    }
    

    out 将是:

    [
        ["108","Excellent ","#009900"],
        ["62","Good ","#99CC00"],
        ["55","Acceptable ","#FFFF00"],
        ["31","Poor ","#FF9900"],
        ["20","Fail ","#FF0000"]
    ]
    

    正如其他人已经说过的那样.. 您不能将键值存储在 javascript 数组中。这就是 json 的用途。

    【讨论】:

      【解决方案4】:

      虽然语法是错误的,但如果你愿意,无论如何你都可以制作这种格式的字符串。

      但是,如您所知,您无法将其读回 JavaScript 变量。

      【讨论】:

        【解决方案5】:

        您可以使用 javascript 的面向对象功能以更简洁的方式完成此任务。

        var jsonArray = [
        {
        "scoreCount": "108",
        "legendDesc": "优秀",
        "colorPatchCode": "#009900"
        },
        {
        "scoreCount": "62",
        "legendDesc": "好",
        "colorPatchCode": "#99CC00"
        },
        {
        "scoreCount": "55",
        "legendDesc": "可以接受",
        "colorPatchCode": "#FFFF00"
        },
        {
        "scoreCount": "31",
        "legendDesc": "可怜的",
        "colorPatchCode": "#FF9900"
        },
        {
        "scoreCount": "20",
        "legendDesc": "失败",
        "colorPatchCode": "#FF0000"
        }
        ];

        function MyJsObject(scoreCount, legendDesc, colorPatchCode) {
        this.scoreCount = scoreCount;
        this.legendDesc = legendDesc;
        this.colorPatchCode = colorPatchCode;
        }

        函数 createJSArray() {
        var jsArray = new Array();
        for(i = 0; i var m = new MyJsObject(jsonArray[i].scoreCount,                        jsonArray[i].legendDesc, jsonArray[i].colorPatchCode);
        jsArray[i] = m;
        }
        alert(jsArray[4].scoreCount);//像这样访问任何对象
        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-09-19
          • 2012-07-21
          • 2020-10-02
          • 1970-01-01
          • 1970-01-01
          • 2018-09-12
          相关资源
          最近更新 更多