我正在从弹簧控制器向角度控制器返回带有逗号分隔值的字符串,如下所示。
app.controller('myListController', ['$scope', function ($scope) {
//get data dynamically , logic..
$scope.myList = response;
console.log("$scope.myList " + $scope.myList); // "one,two","three","four","five,eight,nine"
//here i want to print as one,two,three,four,five,eight,nine
//convert string to array with comma separated values
var array_list = JSON.parse($scope.myList);
console.log("array_list :: " + array_list);
}]);
上面的代码抛出错误
angular.min.js?dummy=0.6014859345541128:119 SyntaxError: Unexpected token , in JSON at position 15
at JSON.parse (<anonymous>)
相同的代码,当用静态代码替换时,它可以正常工作。 例如:
$scope.myList = ["one,two","three","four","five,eight,nine"];
console.log("$scope.myList static content:: " + $scope.myList); //one,two,three,four,five,eight,nine
上面有输入吗?
答案 0 :(得分:0)
JSON.parse需要一个字符串作为有效JSON输入,并返回一个JavaScript对象。
JSON.stringify需要一个JavaScript对象作为输入并返回一个字符串。
在您的示例中,您好像将$ scope.myList(JavaScript数组)传递到JSON.parse中,期望得到字符串结果。如果$ scope.myList是JavaScript对象,请使用.stringify
如果要查找的结果是一,二,三,四,五,八,九,则应使用Array.join方法。 EX // $ scope.myList.join()
答案 1 :(得分:0)
正如我在JSON.stringify结果中看到的那样,您的响应字符串必须是以下值:
'"one,two","three","four","five,eight,nine"'
如果是,则可以使用简单的正则表达式来获得所需的结果:
var result = $scope.myList.replace(/"/g, ""); //"one,two,three,four,five,eight,nine"
如果这不起作用,请分享$ scope.myList的确切值