angular.toJson无法正常工作(1.0.8)

时间:2013-10-09 22:54:37

标签: angularjs

我正在使用角度(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"}); // "{}"

1 个答案:

答案 0 :(得分:5)

在文档(http://code.angularjs.org/1.0.8/docs/api/angular.toJson)中,angular.toJson会忽略以 $ 开头的所有属性。这种情况会发生在很多角度方法中(例如angular.equals),因为它会在整个地方使用 $ 来为它添加到数据中的任何属性添加前缀。

例如,从$http获取JSON对象将添加一些额外的属性来检查数据是否已解析等。angular.toJson将忽略这些并按预期序列化您的数据。 / p>


更直接地回答您的问题:

angular.toJson似乎与您的示例完全一致。尝试避免使用包含以 $ 开头的属性的数据,如果您确实必须尝试序列化对象而不使用angular.toJson,而是在支持它的浏览器中使用JSON.toStringify

我认为$http方法都接受字符串有效负载以及对象,所以如果你正在使用它,你可以自己执行序列化。我没有对此进行测试,但$http代码使用toJson转换对象有效负载,但会直接传递字符串。