从Google Graphs的JSON对象中删除引号

时间:2014-08-20 22:11:42

标签: json string removeall

我有这种形式的JSON: [["管理信息系统"," 2"," 0"],["营销"," 1" " 1"]] Google Graphs希望它采用以下格式:

 [['Subject', 'Value1', 'Value2'],
 ['Management Information Systems',2,0],
 ['Marketing', 1,1]]

我该怎么做?

2 个答案:

答案 0 :(得分:2)

如果您知道输入本质上是整数,则可以使用parseInt(string)在Javascript中将字符串转换为数字,如果输入可能包含小数部分,则可以parseFloat(string)

答案 1 :(得分:0)

我通常不会使用字符串操作来修改JSON,我会解析JSON以获取JS对象(在您的情况下是一个数组数组),然后在转换回JSON字符串之前直接修改该对象。 / p>

以下是一种方法:

// your input as a string
var input = '[["Management Information Systems","2","0"],["Marketing","1","1"]]';

// parse to get an object that you can manipulate
var obj = JSON.parse(input),
    i,
    output;    
// loop over the array
for (i = 0; i < obj.length; i++){
    obj[i][1] = +obj[i][1];  // convert string to number using 
    obj[i][2] = +obj[i][2];  // the unary plus operator
}    
// add the extra element to the beginning of the array
obj.unshift(['Subject', 'Value1', 'Value2']);    
// convert to JSON string
output = JSON.stringify(obj);

console.log(output);
// ["Subject","Value1","Value2"],["Management Information Systems",2,0],["Marketing",1,1]] 

演示:http://jsfiddle.net/qwoo54rp/

或者您可以使用array .map() method

var input = '[["Management Information Systems","2","0"],["Marketing","1","1"]]';

var obj = JSON.parse(input).map(function(v) {
      return [v[0], +v[1], +v[2]];
    }),
    output;        
obj.unshift(['Subject', 'Value1', 'Value2']);
output = JSON.stringify(obj);

演示:http://jsfiddle.net/qwoo54rp/1/

请注意,您显示的所需格式具有单引号,但是虽然这在JS对象文字或数组文字中有效,但它不是有效的JSON。我不使用Google Graphs,但我认为它要么需要有效的JSON字符串(带双引号),要么需要JS对象(在这种情况下,引号实际上不是值的一部分)。

进一步阅读: