Advertisement
Savelyev_Vyacheslav

JSON insert

Nov 9th, 2023 (edited)
547
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3. const dataJSON_IN = `{
  4.     "sys_security_acl": [
  5.         {
  6.             "active": true,
  7.             "admin_overrides": true,
  8.             "any_fields": false,
  9.             "any_tables": false,
  10.             "application_id": 155931135900000002,
  11.             "column_id": null,
  12.             "condition": "(stateIN-5@-2@0@2)",
  13.             "description": "",
  14.             "name": "[Delete].itsm_request_task",
  15.             "operation": "delete",
  16.             "policy": "Open",
  17.             "role_ids": "169951757498590336",
  18.             "script": "",
  19.             "sys_created_at": "2022-04-15 07:36:22",
  20.             "sys_created_by": 163913798097018628,
  21.             "sys_id": 165000818294108986,
  22.             "sys_updated_at": "2022-04-15 07:36:22",
  23.             "sys_updated_by": 163913798097018628,
  24.             "table_id": 156950581217511178
  25.         },
  26.         {
  27.             "active": true,
  28.             "admin_overrides": false,
  29.             "any_fields": false,
  30.             "any_tables": false,
  31.             "application_id": 156950344216170038,
  32.             "column_id": 155931135900001086,
  33.             "condition": "(stateNOT IN12@10@7)",
  34.             "description": "",
  35.             "name": "[Write].itsm_request_task.state",
  36.             "operation": "write",
  37.             "policy": "Changed",
  38.             "role_ids": "169951757498590336",
  39.             "script": "",
  40.             "sys_created_at": "2022-04-04 14:25:19",
  41.             "sys_created_by": 163913798097018628,
  42.             "sys_id": 164908231991033578,
  43.             "sys_updated_at": "2022-04-12 09:36:55",
  44.             "sys_updated_by": 163913798097018628,
  45.             "table_id": 156950581217511178
  46.         },
  47.         {
  48.             "active": true,
  49.             "admin_overrides": true,
  50.             "any_fields": false,
  51.             "any_tables": false,
  52.             "application_id": 156950344216170038,
  53.             "column_id": null,
  54.             "condition": "(stateNOT IN12@7@10)",
  55.             "description": "",
  56.             "name": "[Write].itsm_request_task",
  57.             "operation": "write",
  58.             "policy": "Open",
  59.             "role_ids": "156951063014647724,169951757498590336",
  60.             "script": "",
  61.             "sys_created_at": "2022-04-04 14:24:38",
  62.             "sys_created_by": 163913798097018628,
  63.             "sys_id": 164908227890279436,
  64.             "sys_updated_at": "2022-04-04 14:24:38",
  65.             "sys_updated_by": 163913798097018628,
  66.             "table_id": 156950581217511178
  67.         },
  68.         {
  69.             "active": true,
  70.             "admin_overrides": true,
  71.             "any_fields": false,
  72.             "any_tables": false,
  73.             "application_id": 156950344216170038,
  74.             "column_id": null,
  75.             "condition": "(stateNOT IN7@12)",
  76.             "description": "",
  77.             "name": "[Write].itsm_incident_task",
  78.             "operation": "write",
  79.             "policy": "Open",
  80.             "role_ids": "156951063014647724,169951757498590336",
  81.             "script": "",
  82.             "sys_created_at": "2022-04-04 14:13:00",
  83.             "sys_created_by": 163913798097018628,
  84.             "sys_id": 164908158094836457,
  85.             "sys_updated_at": "2022-04-04 14:13:00",
  86.             "sys_updated_by": 163913798097018628,
  87.             "table_id": 156950588012506154
  88.         },
  89.         {
  90.             "active": true,
  91.             "admin_overrides": true,
  92.             "any_fields": false,
  93.             "any_tables": false,
  94.             "application_id": 156950344216170038,
  95.             "column_id": null,
  96.             "condition": "(stateIN-5@-2@0@2)",
  97.             "description": "",
  98.             "name": "[Delete].itsm_incident_task",
  99.             "operation": "delete",
  100.             "policy": "Changed",
  101.             "role_ids": "169951757498590336",
  102.             "script": "",
  103.             "sys_created_at": "2022-04-04 13:40:00",
  104.             "sys_created_by": 163913798097018628,
  105.             "sys_id": 164907960095466582,
  106.             "sys_updated_at": "2022-05-27 17:20:17",
  107.             "sys_updated_by": 164726140438057134,
  108.             "table_id": 156950588012506154
  109.         },
  110.         {
  111.             "active": true,
  112.             "admin_overrides": true,
  113.             "any_fields": false,
  114.             "any_tables": false,
  115.             "application_id": 156950344216170038,
  116.             "column_id": 155931135900001086,
  117.             "condition": "(stateNOT IN12@7)",
  118.             "description": "",
  119.             "name": "[Write].itsm_incident_task.state",
  120.             "operation": "write",
  121.             "policy": "Changed",
  122.             "role_ids": "169951757498590336",
  123.             "script": "",
  124.             "sys_created_at": "2022-04-04 13:33:29",
  125.             "sys_created_by": 163913798097018628,
  126.             "sys_id": 164907920997296708,
  127.             "sys_updated_at": "2022-04-04 14:11:48",
  128.             "sys_updated_by": 163913798097018628,
  129.             "table_id": 156950588012506154
  130.         }
  131.     ]
  132. }`
  133.  
  134.  
  135. function modifyAndCleanData(dataJSON_IN, keysToRemove) {
  136.     // Модифицируем строку JSON, добавляя кавычки вокруг числовых значений
  137.     let modifiedJSON = dataJSON_IN.replace(/"(\w+)": (\d{15,})/g, '"$1": "$2"');
  138.  
  139.     // Парсим модифицированную строку JSON обратно в объект JavaScript
  140.     let data = JSON.parse(modifiedJSON);
  141.  
  142.     // Удаляем указанные ключи из каждого элемента в массиве sys_security_acl
  143.     data.sys_security_acl.forEach(acl => {
  144.       keysToRemove.forEach(key => {
  145.         delete acl[key];
  146.       });
  147.     });
  148.  
  149.     return data;
  150.   }
  151.  
  152.   // Пример использования функции
  153.   const keysToRemove = [
  154.     "description",
  155.     "name",
  156.     "sys_created_at",
  157.     "sys_created_by",
  158.     "sys_id",
  159.     "sys_updated_at",
  160.     "sys_updated_by",
  161.     'application_id'
  162.   ];
  163.  
  164.   const modifiedData = modifyAndCleanData(dataJSON_IN, keysToRemove);
  165.  
  166.   // print(JSON.stringify(modifiedData, null, 2));
  167.   print( createSimpleRecordCode(JSON.stringify(modifiedData, null, 2)) )
  168.  
  169. function createSimpleRecordCode(dataJSON) {
  170.   let modifiedJSON = dataJSON.replace(/"(\w+)": (\d{15,})/g, '"$1": "$2"');
  171.   const data = JSON.parse(modifiedJSON);
  172.  
  173.   if (!data || !data.sys_security_acl || !Array.isArray(data.sys_security_acl)) {
  174.     console.error('Invalid input data');
  175.     return '';
  176.   }
  177.  
  178.   let code = '';
  179.  
  180.   data.sys_security_acl.forEach((item, index) => {
  181.     const currentVarName = `current${index}`; // Создаем уникальное имя переменной для каждой итерации
  182.     code += `const ${currentVarName} = new SimpleRecord('sys_security_acl');\n`;
  183.     Object.keys(item).forEach(key => {
  184.       let value = item[key];
  185.  
  186.       if (['description', 'name', 'sys_created_at', 'sys_created_by', 'sys_id', 'sys_updated_at', 'sys_updated_by'].includes(key)) {
  187.         return;
  188.       }
  189.  
  190.       value = JSON.stringify(value); // JSON.stringify обрабатывает все типы значений корректно
  191.       code += `    ${currentVarName}.setValue('${key}', ${value});\n`; // Используем уникальное имя переменной
  192.     });
  193.     code += `    ${currentVarName}.insert();\n\n`; // Завершаем блок кода для текущей итерации
  194.   });
  195.  
  196.   return code;
  197. }
  198.  
  199.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement