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 回答