JSON.parse(json) 它坏了
JSON.parse(json) it's is broken
抱歉我的英语不好。
我正在尝试使用 Morris.js, i'm using the line Chart and wanna make it with dynamic data, but when I will convert my array to a JsonString, it's broke my aplication, I already try some sollutions on internet like this 和
其他,但未成功
当我将数组转换为 Json 时,控制台显示:
VM13133:1 Uncaught SyntaxError: Unexpected end of JSONinput(…)
executeMorrisGrafics @
dashboard_1Mensal.controller.js:44initController @
dashboard_1Mensal.controller.js:26(anonymous function) @
dashboard_1Mensal.controller.js:16
我的代码是这样的
[...]
function executeMorrisGrafics(startDate, endDate){
RequestService.getReturnMalingResult(startDate, endDate).then(function(data){
var array = [];
for(var i=0;i<data.listLineChartEmailSms.length;i++){
array.push({
y: data.listLineChartEmailSms[i.toString()].y,
a: data.listLineChartEmailSms[i.toString()].a,
b: data.listLineChartEmailSms[i.toString()].b
});
}
dataJson = array; //dataJson is a global Var
});
console.log(dataJson);//working until here
var result = JSON.parse(dataJson.toString());//here is the problem
Morris.Line({
element: 'grafic-LineChart1',
data: result,
xkey: 'y',
ykeys: ['a', 'b'],
labels: ['Series A', 'Series B']
});
[...]
谢谢
简单来说,JSON是一个对象的文本表示;对象是数据结构。
没有必要 JSON.parse()
已经是您程序中的对象的东西。
[…]
var result = dataJson;
Morris.Line({
element: 'grafic-LineChart1',
data: result,
xkey: 'y',
ykeys: ['a', 'b'],
labels: ['Series A', 'Series B']
});
此外,就像@adeneo 提到的那样,dataJson
似乎是由 Promise 回调异步设置的,但是您使用 dataJson
的代码是同步的。
从关于line charts的Morris.js页面,数据参数被描述为
The data to plot. This is an array of objects, containing x and y attributes as described by the xkey and ykeys options.
所以在您的代码中您不需要使用 dataJson.toString() 函数。您的代码应如下所示。
[...]
function executeMorrisGrafics(startDate, endDate){
RequestService.getReturnMalingResult(startDate, endDate).then(function(data){
var array = [];
for(var i=0;i<data.listLineChartEmailSms.length;i++){
array.push({
y: data.listLineChartEmailSms[i.toString()].y,
a: data.listLineChartEmailSms[i.toString()].a,
b: data.listLineChartEmailSms[i.toString()].b
});
}
dataJson = array; //dataJson is a global Var
});
console.log(dataJson);//working until here
//var result = JSON.parse(dataJson.toString());//here is the problem
Morris.Line({
element: 'grafic-LineChart1',
data: dataJson,
xkey: 'y',
ykeys: ['a', 'b'],
labels: ['Series A', 'Series B']
});
[...]
更详细的解释是 JSON 是用于 JavaScript 中的对象的字符串格式。但是您的代码没有做任何需要 JSON 的事情。请参阅 http://www.w3schools.com/js/js_json_intro.asp 了解 JSON 入门。
抱歉我的英语不好。
我正在尝试使用 Morris.js, i'm using the line Chart and wanna make it with dynamic data, but when I will convert my array to a JsonString, it's broke my aplication, I already try some sollutions on internet like this 和
其他,但未成功
当我将数组转换为 Json 时,控制台显示:
VM13133:1 Uncaught SyntaxError: Unexpected end of JSONinput(…)
executeMorrisGrafics @
dashboard_1Mensal.controller.js:44initController @
dashboard_1Mensal.controller.js:26(anonymous function) @
dashboard_1Mensal.controller.js:16
我的代码是这样的
[...]
function executeMorrisGrafics(startDate, endDate){
RequestService.getReturnMalingResult(startDate, endDate).then(function(data){
var array = [];
for(var i=0;i<data.listLineChartEmailSms.length;i++){
array.push({
y: data.listLineChartEmailSms[i.toString()].y,
a: data.listLineChartEmailSms[i.toString()].a,
b: data.listLineChartEmailSms[i.toString()].b
});
}
dataJson = array; //dataJson is a global Var
});
console.log(dataJson);//working until here
var result = JSON.parse(dataJson.toString());//here is the problem
Morris.Line({
element: 'grafic-LineChart1',
data: result,
xkey: 'y',
ykeys: ['a', 'b'],
labels: ['Series A', 'Series B']
});
[...]
谢谢
简单来说,JSON是一个对象的文本表示;对象是数据结构。
没有必要 JSON.parse()
已经是您程序中的对象的东西。
[…]
var result = dataJson;
Morris.Line({
element: 'grafic-LineChart1',
data: result,
xkey: 'y',
ykeys: ['a', 'b'],
labels: ['Series A', 'Series B']
});
此外,就像@adeneo 提到的那样,dataJson
似乎是由 Promise 回调异步设置的,但是您使用 dataJson
的代码是同步的。
从关于line charts的Morris.js页面,数据参数被描述为
The data to plot. This is an array of objects, containing x and y attributes as described by the xkey and ykeys options.
所以在您的代码中您不需要使用 dataJson.toString() 函数。您的代码应如下所示。
[...]
function executeMorrisGrafics(startDate, endDate){
RequestService.getReturnMalingResult(startDate, endDate).then(function(data){
var array = [];
for(var i=0;i<data.listLineChartEmailSms.length;i++){
array.push({
y: data.listLineChartEmailSms[i.toString()].y,
a: data.listLineChartEmailSms[i.toString()].a,
b: data.listLineChartEmailSms[i.toString()].b
});
}
dataJson = array; //dataJson is a global Var
});
console.log(dataJson);//working until here
//var result = JSON.parse(dataJson.toString());//here is the problem
Morris.Line({
element: 'grafic-LineChart1',
data: dataJson,
xkey: 'y',
ykeys: ['a', 'b'],
labels: ['Series A', 'Series B']
});
[...]
更详细的解释是 JSON 是用于 JavaScript 中的对象的字符串格式。但是您的代码没有做任何需要 JSON 的事情。请参阅 http://www.w3schools.com/js/js_json_intro.asp 了解 JSON 入门。