JSON.在关键字中使用美元解析错误
JSON.parse error with dollar in key
我正在尝试解析字符串"{$Duration:1200,$Opacity:2}"
到对象
var tr = "{$Duration:1200,$Opacity:2}";
JSON.parse(tr);
失败,出现
异常Unexpected token $ in JSON at position 1.
关于我应该如何处理这种情况,有什么建议吗?
JSON中的对象键和字符串需要在双引号内。
试试这个。
JSON.parse('{ "$Duration": 1200, "$Opacity": 2 }');
将它们包裹到""
中。这是一个JSON syntax
,将每个键和值包装到""
中,您可以在没有""
的情况下放入数字和布尔值。
var str = JSON.parse('{"$Duration":"1200","$Opacity":"2"}');
console.log(str);
或者您可以简单地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>
您应该将key/props与"
括起来。'
单引号也不起作用。如果您可以控制生成字符串。修改如下。如果没有,应该考虑使用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);
相关文章:
- AngularFire 0.5美元移除.错误:Firebase.child失败:第一个参数是无效路径
- Angular JS和Ionic-http.post 美元的错误,帮助我理解
- 美元http.Post到PHP文件,500内部服务器错误
- JSON.在关键字中使用美元解析错误
- jQuery美元.Firefox中的ajax错误:"无法转换JavaScript参数"
- AngularJS问美元.所有,触发不管错误
- 美元.Ajax请求返回一些错误
- Jquery美元.在错误处理程序中返回未定义的jqXHR
- AngularJs美元错误.类型前的最小长度值
- 美元http.angular应用中的json调用会返回错误
- 美元.getJSON .always()方法在HTTP错误时无法执行
- jQuery美元.Fn不工作,没有错误
- 美元.Ajax超时的例子是错误和危险的
- 美元的范围.$apply返回错误
- 美元.Ajax错误函数仅在重新启动节点服务器时调用
- 美元.getJSON执行错误回调
- 美元.在控制台错误中,alert不是Jquery中的一个函数
- 如何查找$invalid或$error.必需的,美元的错误.模式使用一个简单的HTML表单和指令
- 美元.后验证表单字段和块提交是有错误
- 角美元http.访问同一主机但不同端口失败,没有任何有意义的错误