我正在尝试将字符串"{$Duration:1200,$Opacity:2}"
解析为Object
var tr = "{$Duration:1200,$Opacity:2}";
JSON.parse(tr);
因例外
而失败Unexpected token $ in JSON at position 1.
关于如何处理这种情况的任何指示?
答案 0 :(得分:1)
将它们包裹到""
。这是JSON syntax
,将每个键和值包装到""
。您可以在不使用""
的情况下输入数字和布尔值。
var str = JSON.parse('{"$Duration":"1200","$Opacity":"2"}');
console.log(str);
答案 1 :(得分:1)
对象键和字符串必须在JSON中的双引号内。
试试这个。
JSON.parse('{ "$Duration": 1200, "$Opacity": 2 }');
答案 2 :(得分:0)
您应该使用"
附加键/道具。 '
单引号也无法发挥作用。如果您可以控制生成字符串。修改如下。如果没有,您应该考虑使用REGEX。
var a = JSON.parse('{"$Duration":1200,"$Opacity":2}');
console.log(a);

如果修改了键名,您只需在字符串中替换它们即可。最后得到一个有效的JSON:
var str = "{$Duration:1200,$Opacity:2}",
validStr = str.replace(/((\$[a-zA-Z0-9]*)(?:\:))/g, '"$2":'),
j = JSON.parse(validStr);
console.log(j);

答案 3 :(得分:0)
或者您只需JSON.stringify()
然后JSON.parse()
无需在任何地方添加额外的引号。请在代码段下方运行。
var app = angular.module('app', []);
app.controller('Ctrl', function($scope) {
var str = JSON.stringify({$Duration:1200,$Opacity:2});
$scope.list = JSON.parse(str);
console.log(JSON.parse(str));
});

<script data-require="angular.js@1.4.8" data-semver="1.4.8" src="https://code.angularjs.org/1.4.8/angular.js"></script>
<div ng-app="app" ng-controller="Ctrl">
{{list}}
<p>{{list.$Duration}} - {{list.$Opacity}}</p>
</div>
&#13;