将 json 字符串转换为数组格式,可用于绘制数据图表

Convert json string to array format, that can be use to chart data

本文关键字:用于 绘制 数据 格式 字符串 json 转换 数组      更新时间:2023-09-26

实际数据:

 var x =" [{ name: 'Chintan test', data: [3, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0] }, 
{ name: 'Lara Black &White', data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }, 
{ name: 'kamlesh ', data: [1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0] }, { name: 'Gopala lalalala', data: [1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0] }, 
{ name: 'Saurin Test ', data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }]";

如何转换,以便我可以得到以下结果:

var y = [{ name: 'Chintan test', data: [3, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0] }, 
{ name: 'Lara Black &White', data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }, 
{ name: 'kamlesh ', data: [1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0] }, { name: 'Gopala lalalala', data: [1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0] }, 
{ name: 'Saurin Test ', data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }]

我做了什么:

尝试 1 :

y=x.substring(1,x.length-1);  // not helpfull

尝试 2 :

y = JSON.parse(x);  //  SyntaxError: JSON.parse: expected property name or '}' at line 1 column 5 of the JSON data

该字符串不是有效的 JSON(您可以在此处检查它 http://jsonlint.com/),因此为了解析它,您首先需要将其转换为有效的 JSON。

要使其成为有效的JSON,属性名称应用双引号封装(名称:=>"名称:)字符串也是如此("钦坦测试"=>"钦坦测试")。您可以通过一些字符串替换来执行此操作:

var x =" [{ name: 'Chintan test', data: [3, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0] }, { name: 'Lara Black &White', data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }, { name: 'kamlesh ', data: [1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0] }, { name:'Gopala lalalala', data: [1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0] }, { name: 'Saurin Test ', data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }]";
x = x.replace(/data:/g, '"data":'); //name attribute data to "data"
x = x.replace(/name:/g, '"name":'); //name attribute name to "name"
x = x.replace(/:'s*'(.+?)'/g, ':"$1"'); // :'string' to :"string"
var y = JSON.parse(x);

请注意,x 中的字符串不应包含新行。

jsfiddle 工作示例:http://jsfiddle.net/jx3opp8g/

这不是有效的 JSON,主要是因为 JSON 要求属性名称用引号括起来。 在属性名称周围添加引号后,看起来它应该是可解析的。