我正在从JSON构建图形图。这就是我当前的方法:
loadGraph(objectName, objectCol1){
this.graph.fromJSON({
"cells": [{
"question": objectName,
"options": [{"id": "yes", "text": "Yes"}, {"id": "no", "text": "No"}]
}
]
});
}
但是,我试图传递' objectCol1'而不是硬编码选项值。在里面。所以看起来应该是这样的:
loadGraph(objectName, objectCol1){
this.graph.fromJSON({
"cells": [{
"question": objectName,
"options": [objectCol1]
}
]
});
}
现在,当我想将我的String数组添加为' options'的值时,就会出现问题。键。如您所见,我的数组形成为看起来像JSON。
let arr1: String[] = [];
for (let entry of this.dropdownData.columns) {
arr1.push('{"id": "'+entry.name+'", "text": "'+entry.name+'"}');
}
this.edit.loadGraph(objectName, objectName2,arr1.toString());
arr1.toString()返回用引号括起来的数据,因此我的JSON不好。 "选择"值看起来像:
"options": ['{"id": "ID", "text": "ID"},{"id": "CREATED_BY", "text": "CREATED_BY"}']
从阵列获得的数据应该没有''分数。你的建议是什么?
答案 0 :(得分:1)
问题不在于你的JSON '
。它首先是无效的JSON。有效的JSON必须具有顶级对象或数组。阅读json.org
此外,您不需要将字符串推送到数组,或将arr1.toString()
传递给函数。
如果loadGraph函数使用JSON.parse,那么你可以使用类似
的东西arr1.push( JSON.stringify( {id: entry.name, text: entry.name } )
传递整个数组而不是传递arr1.toString()
。
在loadGraph方法中,您可以执行
this.graph.fromJSON({
"cells": [{
"question": objectName,
"options": objectCol1
}]
});
它应该有用。
如果loadGraph函数没有使用JSON.parse,那么您也不需要将对象包装在JSON.stringify中。但是,情况似乎并非如此。
答案 1 :(得分:0)
数据用引号括起来,因为你是这样写的。试试这个,找出差异。
let arr1: String[] = [];
for (let entry of this.dropdownData.columns) {
arr1.push({id: entry.name, text: entry.name});
}
this.edit.loadGraph(objectName, objectName2,arr1.toString());