添加到我的 JSON.stringify 结果中的 $$hashKey 是什么

2022-08-30 00:04:25

我尝试过在他们的文档的Mozilla JSON字符串化页面上以及SO和Google上查找,但没有找到任何解释。我已经用了很多时间,但从来没有遇到过这个结果。JSON.stringify

我有一个JSON对象数组:

[
    {
        "param_2": "Description 1",
        "param_0": "Name 1",
        "param_1": "VERSION 1"
    },
    {
        "param_2": "Description 2",
        "param_0": "Name 2",
        "param_1": "VERSION 2"
    },
    {
        "param_2": "Description 3",
        "param_0": "Name 3",
        "param_1": "VERSION 3"
    }
]

它附加到我的.为了将它们作为一个参数,我使用了该方法并接收以下内容:$scopePOSTJSON.stringify()

   [
        {
            "param_2": "Description 1",
            "param_0": "Name 1",
            "param_1": "VERSION 1",
            "$$hashKey": "005"
        },
        {
            "param_2": "Description 2",
            "param_0": "Name 2",
            "param_1": "VERSION 2",
            "$$hashKey": "006"
        },
        {
            "param_2": "Description 3",
            "param_0": "Name 3",
            "param_1": "VERSION 3",
            "$$hashKey": "007"
        }
    ]

我只是好奇属性到底是什么,因为我期望从方法中更类似于以下内容(即,没有):$$hashkeystringify$$hashkey

[
    {
        "1":{
            "param_2": "Description 1",
            "param_0": "Name 1",
            "param_1": "VERSION 1"
        },
         "2":{
            "param_2": "Description 2",
            "param_0": "Name 2",
            "param_1": "VERSION 2"
        },
         "3":{
            "param_2": "Description 3",
            "param_0": "Name 3",
            "param_1": "VERSION 3"
        }
    }
]

我不确定这是否是一个因素,但我正在使用以下内容:

  • Angularjs 1.1.5,
  • JQuery 1.8.2
  • 弹簧 3.0.4

我也在服务器端使用Spring Security 3.0.7。

它不会给我带来任何问题,但我想知道原因和原因$$hashkey


答案 1

Angular 添加此内容以跟踪您的更改,因此它知道何时需要更新 DOM。

如果您使用而不是使用,那么Angular将为您去除这些内部使用的值。angular.toJson(obj)JSON.stringify(obj)

此外,如果将重复表达式更改为使用后缀,则 Angular 根本不需要添加。例如track by {uniqueProperty}$$hashKey

<ul>
    <li ng-repeat="link in navLinks track by link.href">
        <a ng-href="link.href">{{link.title}}</a>
    </li>
</ul>

只要永远记住你需要“链接”部分表达 - 我总是倾向于忘记这一点。只是肯定不会起作用。track by href


答案 2

在我的用例中(将生成的对象馈送到 X2JS),推荐的方法

data = angular.toJson(source);

帮助删除属性,但 X2JS 无法再处理结果。$$hashKey

data = angular.copy(source);

也删除了属性,但结果仍可用作 X2JS 的参数。$$hashKey