我对JSON.stringify结果中添加的$$hashKey是什么感到困惑。

9 浏览
0 Comments

我对JSON.stringify结果中添加的$$hashKey是什么感到困惑。

我已经尝试在Mozilla JSON stringify页面以及在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"
    }
]

它附加在我的$scope上。为了以一个参数的形式POST,我使用了JSON.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"
        }
    ]

我只是想知道$$hashkey属性到底是什么,因为我期望从stringify方法中获得更类似以下的结果(即,没有$$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
  • Spring 3.0.4

我还在服务器端使用Spring security 3.0.7。

它对我没有任何影响,但我想知道$$hashkey的原因。

admin 更改状态以发布 2023年5月25日
0
0 Comments

在我的使用案例中(将结果对象提供给X2JS),推荐的方法

data = angular.toJson(source);

帮助移除$$hashKey属性,但结果将不能再由X2JS处理。

data = angular.copy(source);

移除了$$hashKey属性,但结果仍可作为X2JS的参数使用。

0
0 Comments

Angular会添加这些内容来跟踪您的更改,以便知道何时需要更新DOM。\n\n如果您使用angular.toJson(obj)而不是JSON.stringify(obj),那么Angular将为您删除这些内部使用值。\n\n此外,如果您更改重复表达式以使用track by{uniqueProperty}后缀,则Angular根本不需要添加$$hashKey。例如:\n\n


\n\n请始终记住需要表达式的“link”部分 - 我总是容易忘记。仅track by href肯定不起作用。

0