这个函数如何处理json body?

问题描述 投票:0回答:1

我需要帮助来理解nodejs中的以下函数如何处理json,我知道该函数接收一个json主体和一个aes密钥来加密字段:

function encryptAllValuesFromObject(body, key) {
    var bodyEnc = __assign({}, body);
    var parametersNames = Object.keys(body);
    parametersNames.forEach(function (parameter) {
        bodyEnc[parameter] = crypto_js_1.AES.encrypt(typeof (body[parameter]) !== 'string' ? JSON.stringify(body[parameter]) : body[parameter], key).toString();
    });
    return bodyEnc;
}

假设函数接收到以下json,输出应该是什么样的?

{
   "origin": {
      "typeId": "RUT",
      "numberId": "13501153-3",
      "accountId": "50010789193",
      "productId": "5",
      "subProductId": "5-202"
   },
   "destiny": {
      "typeId": "RUT",
      "numberId": "12870857-k",
      "name": "Prueba",
      "email": "[email protected]",
      "bankCode": "051",
      "bankDesc": "Banco Falabella",
      "accountId": "10012461337",
      "accountTypeId": "1",
      "accountDesc": "Cuenta Corriente"
       "isFavourite": true,
      "isNewContact": true,
      "saveContact": true
   },
   "subject": "Prueba Transferencia Mobile",
   "amount": "1",
   "softToken": "123456"
}

在通过 post 请求发送之前,输出应该是这样的:

javascript node.js cryptojs
1个回答
0
投票

该函数需要一个对象(主体)和一个键。

function encryptAllValuesFromObject(body, key) {

__assign
不是标准函数,但我认为它是
Object.assign
的快捷方式,它将一个或多个对象浅复制到第一个对象中。他们将数据从 body 复制到一个空对象中,这样他们就不会更改 body 对象中的数据。

var bodyEnc = __assign({}, body);

Object.keys
从 body 对象中检索所有自己的键并将它们返回到数组中,因此它可以用于迭代键。对于“自己的键”,我指的是对象拥有的属性,而不是原型链中的任何键。

var parametersNames = Object.keys(body);

由于

parametersNames
是一个数组,因此他们使用
forEach
来迭代键,并为每个键调用匿名函数。

parametersNames.forEach(function (parameter) {

现在是时候替换每个参数的

bodyEnc
中的值了。

    bodyEnc[parameter] =

它调用函数来加密数据

    crypto_js_1.AES.encrypt(

它检查参数是否不是字符串。

    typeof (body[parameter]) !== 'string' ? 

如果不是字符串,他们会调用

JSON.stringify
将对象转换为字符串(这里有 JSON)。

JSON.stringify(body[参数]) :

如果是字符串,则直接提供给加密函数

body[parameter]

作为加密函数的第二个参数,它们提供密钥 ,键)

并将加密后的数据转换为字符串。

.toString();

});

他们返回带有加密数据的新对象。

  return bodyEnc;
}
© www.soinside.com 2019 - 2024. All rights reserved.