Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
81
rated 0 times [  82] [ 1]  / answers: 1 / hits: 25687  / 9 Years ago, tue, march 24, 2015, 12:00:00

In my angularjs apps, I usually parse a JSON string by using angular.fromJson, like so:



var myObject=angular.fromJSON(jsonString);


However, it seems that I would obtain the same result by using $scope.$eval:



var myObject=$scope.$eval(jsonString);


See this fiddle



Or by using vanilla javaScript, like so:



var myObject=JSON.parse(jsonString);



  • Is there any particular reason to use angular.fromJSON rather than JSON.parse?


  • Is there any possible issue when using $scope.$eval to parse a JSON string?



More From » json

 Answers
23

Check out the source code:



function fromJson(json) {
return isString(json)
? JSON.parse(json)
: json;
}


They're just passing through to JSON.parse.



As for $eval it shells out to $parse:



  // $scope.$eval source:
$eval: function(expr, locals) {
return $parse(expr)(this, locals);
},


$parse source is too long to post, but it is essentially capable of converting inline (stringified) objects to real Objects and so it makes sense that in this case, it will actually convert your JSON as well.



(I did not know this until reading through the $parse source just now.)




Is there any particular reason to use angular.fromJSON rather than JSON.parse?




Nope, not really. Although they do check to you to ensure that you don't double-parse a JSON string, like so:



var jsonString = '{foo:bar}';
var json = JSON.parse(jsonString); // Parsing once is good :)
JSON.parse(json); // Parsing twice is bad :(



Is there any possible issue when using $scope.$eval to parse a JSON string?




I don't think so off the top of my head, other than that you're doing more work than is necessary. So if you know you have JSON, there's no reason to use the heavier $parse function.


[#67328] Saturday, March 21, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
darleneh

Total Points: 231
Total Questions: 110
Total Answers: 94

Location: Spain
Member since Thu, Dec 23, 2021
3 Years ago
darleneh questions
;