如何将字符串解析为 JSON

How to parse string to JSON

我有如下字符串

var str = "{u'MALWARE TROJAN_HORSE': 16, u'MALWARE DUQU': 0, u'MALWARE STUXNET': 8, u'MALWARE STALLING_MANUFACTURING_PLANTS': 1, u'MALWARE VIRUS': 0, u'MALWARE WORM': 0, u'MALWARE NUCLEAR_POWER_PLANTS': 8}"

我需要将其作为数据对象传递给 google 可视化 api 图表,如下所示:

var data = google.visualization.arrayToDataTable([
        ['query', 'count'],
        ['Virus', 8175000],
        ['Malware', 3792000],
        ['Struxnet', 1526000]
      ]); 

实际上我想将 str 对象转换为上面的 JSON 格式,并将第一个数组项 ['query', 'count'] 添加到已解析的字符串

怎么做

您使用的字符串无效JSON。在将其传递给客户端之前,您应该在后端对其进行适当的字符串化。

针对您当前的输入,一个快速而肮脏的解决方案是规范化您的字符串,然后使用 JSON.parse:

var cleanedString = s.replace(/u/g, '').replace(/'/g, '"');
var data = JSON.parse(cleanedString);

// now that we have an actual object, construct the desired array from it
var mappedData = ['query', 'count'].concat(Object.keys(data).map(function (key) {
  return [key, data[key]];
}));