We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
<!DOCTYPE html> <html ng-app="App"> <head> <meta charset="utf-8" /> <title></title> </head> <body> <div ng-controller="jsonController"> <button ng-click="fromJson()">fromJson</button> <button ng-click="toJson()">toJson</button> </div> </body> <script src="ng.js"></script> <script> angular.module("App", []).controller("jsonController", function($scope) { var json = '{"name":"wscats", "skill":"1"}'; var jsonArr = '[{"name":"wscats", "skill":"2"},{"name":"wscats", "skill":"3"}]'; var obj = { name: "wscats", skill: "4" } $scope.fromJson = function() { var obj = angular.fromJson(json); console.log(obj.name); var objArr = angular.fromJson(jsonArr); console.log(objArr[1].name); console.log(objArr[1].skill); } $scope.toJson = function() { var str = angular.toJson(obj, true); console.log(str); } }) </script> </html>
angular.fromJson()方法是把json转化为对象或者对象数组 angular.toJson()方法是把对象或者数组转化json
其实它是angular内部开放出来的其中一个常用的API 其他开放的API可以参考这个文档http://www.runoob.com/angularjs/angularjs-reference.html
它们在angular的源码里面是这样的,注意toJson()还可以传入一个pretty参数
function toJson(obj, pretty) { return "undefined" == typeof obj ? undefined : JSON.stringify(obj, toJsonReplacer, pretty ? " " : null) } function fromJson(json) { return isString(json) ? JSON.parse(json) : json }
看源码可以得知,其实这里用了两个关键的函数JSON.stringify()和JSON.parse 所以上面其实可以用JS的方法来实现,结果一样,只是angular把它封装成一个常用的方法,因为angular自身的框架内部也其实运用到这个方法
var obj1 = JSON.parse(json); console.log(obj1); var obj = angular.fromJson(json);//两者结果一样 console.log(obj);
var str = angular.toJson(obj, true); console.log(str); var str = JSON.stringify(obj); console.log(str);
注意 JSON.stringify(obj, toJsonReplacer, pretty ? " " : null)里面其实可以传三个参数 第一个参数是对象或者数组,第二个参数则是可选的
JSON.stringify(obj, toJsonReplacer, pretty ? " " : null)
第二个参数用于转换结果的函数或数组。
第三个参数也是可选的。它向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取。
而angular把它第二个参数设置成toJsonReplacer,就是传给toJsonReplacer函数去执行一些判断,判断处理后的json键对应的值是否合法
function toJsonReplacer(key, value) { var val = value; return "string" == typeof key && "$" === key.charAt(0) ? val = undefined : isWindow(value) ? val = "$WINDOW" : value && document === value ? val = "$DOCUMENT" : isScope(value) && (val = "$SCOPE"), val }
举一反三我们也可以写个自己的方法放在第二个参数里面,例如写一个把处理的数组输出全部变成大写字母的函数
var arr = ["wscats", "skill"]; $scope.toJson = function() { var str = angular.toJson(obj, true); console.log(str); var str = JSON.stringify(arr, replaceToUpper); function replaceToUpper(key, value) { return value.toString().toUpperCase(); } console.log(str); }
返回如图的结果
The text was updated successfully, but these errors were encountered:
No branches or pull requests
angular.fromJson()方法是把json转化为对象或者对象数组
angular.toJson()方法是把对象或者数组转化json
其实它是angular内部开放出来的其中一个常用的API
其他开放的API可以参考这个文档http://www.runoob.com/angularjs/angularjs-reference.html
它们在angular的源码里面是这样的,注意toJson()还可以传入一个pretty参数
看源码可以得知,其实这里用了两个关键的函数JSON.stringify()和JSON.parse
所以上面其实可以用JS的方法来实现,结果一样,只是angular把它封装成一个常用的方法,因为angular自身的框架内部也其实运用到这个方法
注意
JSON.stringify(obj, toJsonReplacer, pretty ? " " : null)
里面其实可以传三个参数第一个参数是对象或者数组,第二个参数则是可选的
第二个参数用于转换结果的函数或数组。
第三个参数也是可选的。它向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取。
而angular把它第二个参数设置成toJsonReplacer,就是传给toJsonReplacer函数去执行一些判断,判断处理后的json键对应的值是否合法
举一反三我们也可以写个自己的方法放在第二个参数里面,例如写一个把处理的数组输出全部变成大写字母的函数
返回如图的结果
The text was updated successfully, but these errors were encountered: