将String数组添加到JSON

时间:2017-03-16 10:50:19

标签: javascript angular typescript

我正在从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"}']

从阵列获得的数据应该没有''分数。你的建议是什么?

2 个答案:

答案 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());