JSON字符串的值周围带有方括号

时间:2019-01-15 16:40:05

标签: javascript json fusioncharts

我正在尝试从Google Analytics(分析)中解析数据,以获取网站上的报告工具,并且可以毫无问题地恢复数据。然后,我使用该数据生成一个FusionChart对象:

我在“数据”元素中使用的数据是标签/值对组合,如果我明确输入以下内容:

[{ "label":"1","value":"34" },"label":"2","value":"72" },...]

图形运行良好(显示标签等)。

但是,我正在使用的字符串被解析为:

[{ "label":["1"],"value":["34"] },"label":["2"],"value":["72"] },...]

(请注意键的值元素周围的方括号)

拥有这些方括号不会引起任何问题,因此任何人都知道如何在没有这些情况的情况下解析数据?我在elmments上尝试过字符串替换,但是没有运气!

谢谢

2 个答案:

答案 0 :(得分:4)

如果您知道每个标签和值都是一个单元素数组,则可以使用诸如map之类的数组方法来清理数据。

let obj = [{ "label":["1"],"value":["34"] }, { "label":["2"],"value":["72"] }];

let cleaned = obj.map(item => {
  return { label: item.label[0], value: item.value[0] };
});

console.log(cleaned);

答案 1 :(得分:1)

如果您要从其他服务解析字符串,则可以更改JSON。您可以编写一个自定义解析器齐整器,以将其更改为字符串而不是数组。

var json = '[{ "label":["1"],"value":["34"] },{"label":["2"],"value":["72"]}]'

var parsed = JSON.parse(json, (key, value) => ['label', 'value'].includes(key) ? value[0] : value)

console.log(parsed)

如果它来自其他来源,并且已经是一个对象,则无法循环遍历对象数组并将其转换为字符串。