从String REST响应创建Javascript对象数组

时间:2014-03-31 14:47:38

标签: javascript json angularjs rest

我不确定我是否想要在这里实现不可能,javascript不是我的强项。

这是我在javascript中需要的数据结构,以便使用google-charts填充图表:

injuryDistChart.data = [['X', '1', '2', '3', '4', '5', '6'],
  [1, 2, null, null, null, null, null],
  [2, 2, 3, null, null, null, null],
  [3, 2, null, 4, null, 6, null],
  [4, null, null, null, 5, null, null],
  [5, null, null, null, null, 6, null],
  [6, 2, null, null, 5, null, 7],
  [7, 2, null, null, 5, null, 7],
  [8, 2, null, null, 5, null, 7],
  [9, 2, null, null, 5, null, 7],
  [10, 2, null, null, 5, null, 7]
];

我从服务器生成的响应如下。它是一个字符串而不是JSON响应:

"[['X', '1', '2', '3', '4', '5', '6'],
  [1, 2, null, null, null, null, null],
  [2, 2, 3, null, null, null, null],
  [3, 2, null, 4, null, 6, null],
  [4, null, null, null, 5, null, null],
  [5, null, null, null, null, 6, null],
  [6, 2, null, null, 5, null, 7],
  [7, 2, null, null, 5, null, 7],
  [8, 2, null, null, 5, null, 7],
  [9, 2, null, null, 5, null, 7],
  [10, 2, null, null, 5, null, 7]
]"

有没有办法将这个String对象转换为3-D数组,或者我是以错误的方式解决这个问题?

我是否应该发送回JSON响应,并将其转换为我需要的3-D数组?

我正在使用Java RESTful WS,角度和谷歌图表。

2 个答案:

答案 0 :(得分:0)

如果您无法从服务中发回JSON对象以将字符串解析为JSON对象,请对您获取的字符串使用JSON.parse(),但理想情况下,是的,您应该在服务设置为json

答案 1 :(得分:0)

理想情况下,发回JSON是首选方法。如果这是不可能的,那么在这个实例中您需要做的就是将单引号转换为双引号以使其成为有效的JSON,然后像平常那样解析它。

var json = str.replace("'", '"', 'g');
injuryDistChart.data = JSON.parse(json);

Fiddle