0

angular(1.0.8)でペイロードを送信していますが、すべてのjsonを送信していません。ここで、問題を angular.toJson() に要約しました。

angular.toJson(
  {"yt$location": {
    "$t": "US"
  }
});

// "{"yt$location":{}}"

// I would like it should return
// "{"yt$location":{ "$t": "US" }}"

JSON.stringify({"yt$location": {
  "$t": "US"
}});
// "{"yt$location":{"$t":"US"}}"


angular.toJson({"$t":"what"}); // "{}"
4

1 に答える 1

4

ドキュメント ( http://code.angularjs.org/1.0.8/docs/api/angular.toJson )から、 $angular.toJsonで始まるプロパティは無視されます。これは、多くの角度メソッド ( など)で発生します。これは、データに追加するプロパティの前に$を使用するためです。angular.equals

たとえば、JSON オブジェクトを取得する$httpと、データが解決されているかどうかを確認するための追加のプロパティが追加さangular.toJsonれます。これらは無視され、期待どおりにデータがシリアル化されます。


質問にもっと直接答えるには:

angular.toJsonあなたの例から文書化されているとおりに正確に機能しているようです。$で始まるプロパティを持つデータを使用しないようにしてください。どうしても必要な場合は、使用せずにオブジェクトをシリアル化しangular.toJson、代わりにJSON.toStringifyそれをサポートするブラウザーで使用してください。

メソッドはすべて文字列ペイロードとオブジェクトを受け入れると思う$httpので、これを使用している場合はおそらく自分でシリアライゼーションを実行できます。私はこれをテストしていませんが、$httpコードは を使用してオブジェクト ペイロードを変換しますtoJsonが、文字列を直接渡します。

于 2013-10-09T23:35:35.363 に答える