angular.fromJson
私の AngularJS アプリでは、通常、次のようにを使用して JSON 文字列を解析します。
var myObject=angular.fromJSON(jsonString);
ただし、以下を使用しても同じ結果が得られるようです$scope.$eval
:
var myObject=$scope.$eval(jsonString);
または、次のように、Vanilla JavaScript を使用します。
var myObject=JSON.parse(jsonString);
angular.fromJSON
ではなくを使用する特別な理由があるのでしょうかJSON.parse
?$scope.$eval
JSON 文字列を解析するために使用する場合、何か問題が発生する可能性がありますか?
ベストアンサー1
チェックしてくださいソースコード:
function fromJson(json) {
return isString(json)
? JSON.parse(json)
: json;
}
彼らはただ通過しているだけですJSON.parse
。
// $scope.$eval source:
$eval: function(expr, locals) {
return $parse(expr)(this, locals);
},
$parseソースは長すぎて投稿できませんが、基本的にはインライン(文字列化された)オブジェクトを本物オブジェクトなので、この場合は JSON も実際に変換されるのは当然です。
(今 $parse ソースを読むまで、このことは知りませんでした。)
JSON.parse ではなく angular.fromJSON を使用する特別な理由はありますか?
いいえ、そうではありません。ただし、次のように JSON 文字列を二重に解析しないようにチェックは行われます。
var jsonString = '{"foo":"bar"}';
var json = JSON.parse(jsonString); // Parsing once is good :)
JSON.parse(json); // Parsing twice is bad :(
$scope.$eval を使用して JSON 文字列を解析するときに、問題が発生する可能性はありますか?
すぐに思いつく限りでは、必要以上の作業を行っているということ以外は、そうは思えません。したがって、JSON があることがわかっている場合は、より重い $parse 関数を使用する理由はありません。