我有这种形式的JSON: [["管理信息系统"," 2"," 0"],["营销"," 1" " 1"]] Google Graphs希望它采用以下格式:
[['Subject', 'Value1', 'Value2'],
['Management Information Systems',2,0],
['Marketing', 1,1]]
我该怎么做?
答案 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对象(在这种情况下,引号实际上不是值的一部分)。
进一步阅读: