信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 257|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] JSON.stringify 和 JSON.parse 完整示例

[复制链接]

780

主题

864

帖子

5536

积分

积分
5536
跳转到指定楼层
宣传软件楼主
发表于 2026-1-5 09:49:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

资讯缩略图:

资讯发布日期:2026-01-05

资讯发布简介:JSON.stringify 和 JSON.parse 完整示例

资讯关键词:JSON.stringify 和 JSON.parse 完整示例

资讯所属分类:IT资讯 SEO资讯 

联系:JSON.stringify 和 JSON.parse 完整示例

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例 b2b软件

  1. // JSON.stringify 和 JSON.parse 完整示例 - AIWROK IDE 开发 (ES5 兼容)
  2. // 展示从基础到高级的所有 JSON 处理技巧
  3. // ES5系统安卓 JavaScript引擎Rhino     
  4. //🍎交流QQ群711841924群一,苹果内测群,528816639


  5. logWindow.show()
  6. logWindow.setAlpha(300)
  7. logWindow.setHeight(2000)
  8. logWindow.setWidth(1800)

  9. // Rhino兼容的日期格式化函数
  10. function formatDateToString(date) {
  11.   if (!(date instanceof Date)) {
  12.     return date;
  13.   }
  14.   
  15.   var year = date.getFullYear();
  16.   var month = date.getMonth() + 1;
  17.   var day = date.getDate();
  18.   var hours = date.getHours();
  19.   var minutes = date.getMinutes();
  20.   var seconds = date.getSeconds();
  21.   var milliseconds = date.getMilliseconds();
  22.   
  23.   // 补零函数
  24.   function pad(num) {
  25.     return num < 10 ? '0' + num : '' + num;
  26.   }
  27.   
  28.   // 补零函数(3位毫秒)
  29.   function pad3(num) {
  30.     if (num < 10) return '00' + num;
  31.     if (num < 100) return '0' + num;
  32.     return '' + num;
  33.   }
  34.   
  35.   return year + '-' + pad(month) + '-' + pad(day) + 'T' +
  36.          pad(hours) + ':' + pad(minutes) + ':' + pad(seconds) +
  37.          '.' + pad3(milliseconds) + 'Z';
  38. }

  39. // Rhino兼容的日期解析函数
  40. function parseDateFromString(dateString) {
  41.   if (typeof dateString !== 'string') {
  42.     return dateString;
  43.   }
  44.   
  45.   // 检查是否是标准日期格式
  46.   var dateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z$/;
  47.   if (!dateRegex.test(dateString)) {
  48.     return dateString;
  49.   }
  50.   
  51.   try {
  52.     return new Date(dateString);
  53.   } catch (err) {
  54.     printl("日期解析错误:", err);
  55.     print.log("无法解析日期字符串:", dateString);
  56.     return dateString;
  57.   }
  58. }

  59. // ==================== 1. 基础用法 ====================
  60. var user = {
  61.   name: 'AIWROK Developer',
  62.   age: 25,
  63.   skills: ['JavaScript', 'React Native', 'Node.js'],
  64.   active: true
  65. };

  66. printl("1. 基础用法");
  67. print.log("=== JSON 基础用法 ===");

  68. // 基本序列化
  69. var jsonStr = JSON.stringify(user);
  70. printl("序列化结果:", jsonStr);
  71. print.log("JSON.stringify(user):", jsonStr);

  72. // 基本反序列化
  73. var parsedUser = JSON.parse(jsonStr);
  74. printl("反序列化结果:", parsedUser);
  75. print.log("JSON.parse(jsonStr):", parsedUser);

  76. // ==================== 2. 美化输出 ====================
  77. printl("");
  78. print.log("=== 2. 美化输出 ===");

  79. var config = {
  80.   app: 'AIWROK IDE',
  81.   version: '2.1.0',
  82.   settings: {
  83.     theme: 'dark',
  84.     autoSave: true,
  85.     ai: {
  86.       enabled: true,
  87.       suggestions: true
  88.     }
  89.   }
  90. };

  91. printl("原始配置对象:", config);
  92. print.log("config对象:", config);

  93. // 美化输出
  94. var prettyConfig = JSON.stringify(config, null, 2);
  95. printl("美化输出结果:", prettyConfig);
  96. print.log("JSON.stringify(config, null, 2):", prettyConfig);

  97. // ==================== 3. 自定义序列化 (replacer) ====================
  98. printl("");
  99. print.log("=== 3. 自定义序列化 (replacer) ===");

  100. var dataWithDate = {
  101.   name: 'AIWROK 配置',
  102.   created: new Date('2023-06-01'),
  103.   lastModified: new Date(),
  104.   version: '1.0.0',
  105.   features: ['darkMode', 'autoSave', 'aiSuggestions']
  106. };

  107. printl("包含Date对象的数据:", dataWithDate);
  108. print.log("原始dataWithDate:", dataWithDate);

  109. // 自定义 replacer 函数,将 Date 转换为字符串
  110. var serializedData = JSON.stringify(dataWithDate, function(key, value) {
  111.   if (value instanceof Date) {
  112.     return formatDateToString(value);
  113.   }
  114.   return value;
  115. }, 2);

  116. printl("序列化后 (Date转字符串):", serializedData);
  117. print.log("使用replacer后的JSON:", serializedData);

  118. // ==================== 4. 自定义反序列化 (reviver) ====================
  119. printl("");
  120. print.log("=== 4. 自定义反序列化 (reviver) ===");

  121. // 自定义反序列化函数
  122. function customReviver(key, value) {
  123.   // 检查是否是日期字符串格式
  124.   return parseDateFromString(value);
  125. }

  126. printl("自定义reviver函数已定义");
  127. print.log("customReviver函数: 自动转换日期字符串为Date对象");

  128. var deserializedData = JSON.parse(serializedData, customReviver);
  129. printl("反序列化结果:", deserializedData);
  130. print.log("JSON.parse(serializedData, customReviver):", deserializedData);

  131. // ==================== 5. 属性过滤 ====================
  132. printl("");
  133. print.log("=== 5. 属性过滤 ===");

  134. // 过滤敏感信息的函数
  135. var sensitiveData = {
  136.   id: 12345,
  137.   username: 'aiwrok_dev',
  138.   email: 'dev@aiwrok.com',
  139.   password: 'secret123',
  140.   accessToken: 'abc123xyz',
  141.   profile: {
  142.     realName: 'AIWROK Developer',
  143.     phone: '13800138000',
  144.     address: '北京市朝阳区'
  145.   }
  146. };

  147. printl("原始敏感数据:", sensitiveData);
  148. print.log("包含密码等敏感信息的数据:", sensitiveData);

  149. var filteredJson = JSON.stringify(sensitiveData, function(key, value) {
  150.   if (key === 'password' || key === 'accessToken' || key === 'phone' || key === 'address') {
  151.     return undefined;
  152.   }
  153.   return value;
  154. }, 2);

  155. printl("过滤后的JSON:", filteredJson);
  156. print.log("移除敏感信息后的结果:", filteredJson);

  157. // ==================== 6. 数组处理 ====================
  158. printl("");
  159. print.log("=== 6. 数组处理 ===");

  160. var projects = [
  161.   {
  162.     name: 'AIWROK IDE',
  163.     type: 'ide',
  164.     technologies: ['React', 'Electron', 'Node.js'],
  165.     status: 'active',
  166.     startDate: new Date('2023-06-01')
  167.   },
  168.   {
  169.     name: 'AIWROK Web IDE',
  170.     type: 'web',
  171.     technologies: ['React', 'Node.js', 'Monaco Editor'],
  172.     status: 'planning',
  173.     startDate: new Date('2024-01-15')
  174.   },
  175.   {
  176.     name: 'AIWROK API',
  177.     type: 'api',
  178.     technologies: ['Express', 'MongoDB', 'JWT'],
  179.     status: 'active',
  180.     startDate: new Date('2023-09-01')
  181.   }
  182. ];

  183. printl("项目数组:", projects);
  184. print.log("包含Date对象的数组:", projects);

  185. // 序列化数组
  186. var projectsJson = JSON.stringify(projects, function(key, value) {
  187.   if (key === 'startDate') {
  188.     return formatDateToString(value);
  189.   }
  190.   return value;
  191. }, 2);

  192. printl("序列化后的项目数组:", projectsJson);
  193. print.log("Date对象转换为字符串:", projectsJson);

  194. // 反序列化数组
  195. var parsedProjects = JSON.parse(projectsJson, function(key, value) {
  196.   if (key === 'startDate') {
  197.     return parseDateFromString(value);
  198.   }
  199.   return value;
  200. });

  201. printl("反序列化后的项目数组:", parsedProjects);
  202. print.log("字符串转换回Date对象:", parsedProjects);

  203. // ==================== 7. 错误处理 ====================
  204. printl("");
  205. print.log("=== 7. 错误处理 ===");

  206. // 安全解析函数
  207. function safeParse(jsonString, fallback) {
  208.   fallback = fallback === undefined ? null : fallback;
  209.   try {
  210.     return JSON.parse(jsonString);
  211.   } catch (err) {
  212.     printl("JSON解析错误:", err);
  213.     print.log("解析失败,返回默认值:", fallback);
  214.     return fallback;
  215.   }
  216. }

  217. // 安全序列化函数 - 处理循环引用
  218. function safeStringify(obj, space) {
  219.   space = space === undefined ? 0 : space;
  220.   var visited = [];
  221.   
  222.   function replacer(key, value) {
  223.     if (typeof value === 'object' && value !== null) {
  224.       // 检查循环引用
  225.       if (visited.indexOf(value) !== -1) {
  226.         return '[Circular Reference]';
  227.       }
  228.       visited.push(value);
  229.     }
  230.     return value;
  231.   }
  232.   
  233.   try {
  234.     return JSON.stringify(obj, replacer, space);
  235.   } catch (err) {
  236.     printl("JSON序列化错误:", err);
  237.     print.log("序列化失败,返回空对象");
  238.     return '{}';
  239.   }
  240. }

  241. printl("安全解析和序列化函数已定义");
  242. print.log("包含错误处理的工具函数");

  243. // 测试有效和无效的 JSON
  244. var validJson = '{"message": "Hello, AIWROK!", "status": "success"}';
  245. var invalidJson = '{"message": "Hello, AIWROK!", "status": }';

  246. printl("测试有效JSON:", validJson);
  247. print.log("validJson:", validJson);

  248. var validResult = safeParse(validJson);
  249. printl("有效JSON解析结果:", validResult);
  250. print.log("safeParse(validJson):", validResult);

  251. printl("测试无效JSON:", invalidJson);
  252. print.log("invalidJson:", invalidJson);

  253. var invalidResult = safeParse(invalidJson);
  254. printl("无效JSON解析结果:", invalidResult);
  255. print.log("safeParse(invalidJson):", invalidResult);

  256. // 测试循环引用
  257. var circularObj = { name: 'AIWROK' };
  258. circularObj.self = circularObj;

  259. printl("测试循环引用对象:", safeStringify(circularObj, 2));
  260. print.log("circularObj包含自引用");

  261. var circularResult = safeStringify(circularObj);
  262. printl("循环引用序列化结果:", circularResult);
  263. print.log("safeStringify(circularObj):", circularResult);

  264. // ==================== 8. 实际应用示例 - 用户会话管理 ====================
  265. printl("");
  266. print.log("=== 8. 用户会话管理 ===");

  267. // 用户会话类
  268. function UserSession(userData) {
  269.   this.user = userData;
  270.   this.loginTime = new Date();
  271.   this.lastActivity = new Date();
  272.   this.sessionId = this.generateSessionId();
  273. }

  274. UserSession.prototype.generateSessionId = function() {
  275.   return 'sess_' + Math.random().toString(36).substr(2, 9);
  276. };

  277. UserSession.prototype.updateActivity = function() {
  278.   this.lastActivity = new Date();
  279. };

  280. UserSession.prototype.getSessionInfo = function() {
  281.   return {
  282.     sessionId: this.sessionId,
  283.     user: this.user,
  284.     loginTime: formatDateToString(this.loginTime),
  285.     lastActivity: formatDateToString(this.lastActivity),
  286.     isActive: this.isSessionActive()
  287.   };
  288. };

  289. UserSession.prototype.isSessionActive = function() {
  290.   var now = new Date();
  291.   var timeDiff = now - this.lastActivity;
  292.   return timeDiff < 30 * 60 * 1000; // 30分钟无活动视为过期
  293. };

  294. UserSession.prototype.serialize = function() {
  295.   var self = this;
  296.   return JSON.stringify(this, function(key, value) {
  297.     if (key === 'loginTime' || key === 'lastActivity') {
  298.       return formatDateToString(value);
  299.     }
  300.     // 避免序列化原型链上的方法
  301.     if (typeof value === 'function') {
  302.       return undefined;
  303.     }
  304.     return value;
  305.   });
  306. };

  307. UserSession.prototype.deserialize = function(jsonString) {
  308.   try {
  309.     var data = JSON.parse(jsonString);
  310.     this.user = data.user;
  311.     this.loginTime = parseDateFromString(data.loginTime);
  312.     this.lastActivity = parseDateFromString(data.lastActivity);
  313.     this.sessionId = data.sessionId;
  314.     return true;
  315.   } catch (err) {
  316.     printl("会话反序列化错误:", err);
  317.     print.log("恢复会话失败:", err);
  318.     return false;
  319.   }
  320. };

  321. printl("UserSession类已定义");
  322. print.log("包含序列化、反序列化等方法");

  323. // 创建用户会话
  324. var userData = {
  325.   id: 1001,
  326.   username: 'aiwrok_dev',
  327.   permissions: ['read', 'write', 'admin']
  328. };

  329. var session = new UserSession(userData);
  330. printl("创建用户会话:", session.getSessionInfo());
  331. print.log("session对象:", session.getSessionInfo());

  332. // 保存会话到本地存储
  333. var sessionJson = session.serialize();
  334. printl("序列化后的会话数据:", sessionJson);
  335. print.log("session.serialize():", sessionJson);

  336. var mockStorage = {
  337.   data: {},
  338.   setItem: function(key, value) {
  339.     this.data[key] = value;
  340.   },
  341.   getItem: function(key) {
  342.     return this.data[key];
  343.   }
  344. };

  345. mockStorage.setItem('aiwrok_user_session', sessionJson);
  346. printl("会话数据已保存到存储");
  347. print.log("保存到localStorage模拟");

  348. // 从本地存储恢复会话
  349. var restoredSession = new UserSession({});
  350. var sessionData = mockStorage.getItem('aiwrok_user_session');
  351. if (restoredSession.deserialize(sessionData)) {
  352.   printl("会话恢复成功:", restoredSession.getSessionInfo());
  353.   print.log("会话恢复成功:", restoredSession.getSessionInfo());
  354. } else {
  355.   printl("会话恢复失败");
  356.   print.log("恢复失败,可能是数据损坏");
  357. }

  358. // ==================== 9. 项目配置管理 ====================
  359. printl("");
  360. print.log("=== 9. 项目配置管理 ===");

  361. // 项目配置类
  362. function ProjectConfig() {
  363.   this.configs = {};
  364. }

  365. ProjectConfig.prototype.save = function(name, config) {
  366.   this.configs[name] = config;
  367. };

  368. ProjectConfig.prototype.get = function(name) {
  369.   return this.configs[name] || null;
  370. };

  371. ProjectConfig.prototype.getAll = function() {
  372.   return this.configs;
  373. };

  374. printl("ProjectConfig类已定义");
  375. print.log("配置管理类: save, get, getAll方法");

  376. var projectConfig = {
  377.   name: 'AIWROK IDE Project',
  378.   version: '2.1.0',
  379.   created: new Date('2023-06-01'),
  380.   lastModified: new Date(),
  381.   features: {
  382.     darkMode: true,
  383.     autoSave: true,
  384.     intelliSense: true,
  385.     codeFormatting: true
  386.   },
  387.   dependencies: {
  388.     core: ['react', 'react-native'],
  389.     dev: ['jest', 'eslint', 'prettier'],
  390.     ui: ['react-native-vector-icons', 'react-native-gesture-handler']
  391.   }
  392. };

  393. printl("项目配置对象:", projectConfig);
  394. print.log("包含Date对象和嵌套对象");

  395. // 保存项目配置到本地存储
  396. function saveProjectConfig(config) {
  397.   var serialized = JSON.stringify(config, function(key, value) {
  398.     if (value instanceof Date) {
  399.       return formatDateToString(value);
  400.     }
  401.     return value;
  402.   }, 2);
  403.   
  404.   // 模拟 localStorage 保存
  405.   mockStorage.setItem('aiwrok_project_config', serialized);
  406.   return serialized;
  407. }

  408. // 加载项目配置
  409. function loadProjectConfig() {
  410.   var stored = mockStorage.getItem('aiwrok_project_config');
  411.   if (!stored) return null;
  412.   
  413.   try {
  414.     return JSON.parse(stored, function(key, value) {
  415.       // 自动转换日期字符串为 Date 对象
  416.       if (key === 'created' || key === 'lastModified') {
  417.         return parseDateFromString(value);
  418.       }
  419.       return value;
  420.     });
  421.   } catch (err) {
  422.     printl("加载配置错误:", err);
  423.     print.log("配置解析失败:", err);
  424.     return null;
  425.   }
  426. }

  427. printl("配置保存和加载函数已定义");
  428. print.log("自动处理Date对象转换");

  429. var savedConfig = saveProjectConfig(projectConfig);
  430. printl("保存配置结果:", savedConfig);
  431. print.log("saveProjectConfig返回:", savedConfig);

  432. var loadedConfig = loadProjectConfig();
  433. printl("加载配置结果:", loadedConfig);
  434. print.log("loadProjectConfig返回:", loadedConfig);

  435. if (loadedConfig && loadedConfig.created instanceof Date) {
  436.   printl("Date对象恢复成功");
  437.   print.log("loadedConfig.created是Date对象:", loadedConfig.created);
  438. } else {
  439.   printl("Date对象恢复失败");
  440.   print.log("loadedConfig.created不是Date对象");
  441. }

  442. // ==================== 10. 代码片段管理 ====================
  443. printl("");
  444. print.log("=== 10. 代码片段管理 ===");

  445. // 代码片段存储
  446. function CodeSnippetManager() {
  447.   this.snippets = [];
  448. }

  449. CodeSnippetManager.prototype.addSnippet = function(name, language, code, description) {
  450.   description = description === undefined ? '' : description;
  451.   var snippet = {
  452.     id: Date.now(),
  453.     name: name,
  454.     language: language,
  455.     code: code,
  456.     description: description,
  457.     createdAt: new Date(),
  458.     tags: this.extractTags(code)
  459.   };
  460.   
  461.   this.snippets.push(snippet);
  462.   return snippet;
  463. };

  464. CodeSnippetManager.prototype.extractTags = function(code) {
  465.   var commonPatterns = {
  466.     'React': /import.*from\s+['"]react['"]/,
  467.     'React Native': /from\s+['"]react-native['"]/,
  468.     'API': /fetch\(|axios\./,
  469.     'Async': /async\s+|await\s+/,
  470.     'ES6': /const\s+|let\s+|=>/
  471.   };
  472.   
  473.   var tags = [];
  474.   for (var keyword in commonPatterns) {
  475.     if (commonPatterns.hasOwnProperty(keyword) && commonPatterns[keyword].test(code)) {
  476.       tags.push(keyword.toLowerCase());
  477.     }
  478.   }
  479.   return tags;
  480. };

  481. CodeSnippetManager.prototype.searchSnippets = function(keyword) {
  482.   return this.snippets.filter(function(snippet) {
  483.     return snippet.name.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||
  484.            snippet.code.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||
  485.            snippet.description.toLowerCase().indexOf(keyword.toLowerCase()) !== -1 ||
  486.            snippet.tags.some(function(tag) { return tag.indexOf(keyword.toLowerCase()) !== -1; });
  487.   });
  488. };

  489. CodeSnippetManager.prototype.exportSnippets = function() {
  490.   return JSON.stringify(this.snippets, function(key, value) {
  491.     if (key === 'createdAt') {
  492.       return formatDateToString(value);
  493.     }
  494.     return value;
  495.   }, 2);
  496. };

  497. CodeSnippetManager.prototype.importSnippets = function(jsonString) {
  498.   try {
  499.     var snippets = JSON.parse(jsonString, function(key, value) {
  500.       if (key === 'createdAt') {
  501.         return parseDateFromString(value);
  502.       }
  503.       return value;
  504.     });
  505.    
  506.     this.snippets = snippets;
  507.     return true;
  508.   } catch (err) {
  509.     printl("导入代码片段错误:", err);
  510.     print.log("导入失败:", err);
  511.     return false;
  512.   }
  513. };

  514. CodeSnippetManager.prototype.saveToStorage = function() {
  515.   var data = {
  516.     snippets: this.snippets,
  517.     exportedAt: new Date()
  518.   };
  519.   var serialized = JSON.stringify(data, function(key, value) {
  520.     if (value instanceof Date) {
  521.       return formatDateToString(value);
  522.     }
  523.     return value;
  524.   }, 2);
  525.   mockStorage.setItem('aiwrok_code_snippets', serialized);
  526. };

  527. CodeSnippetManager.prototype.loadFromStorage = function() {
  528.   var stored = mockStorage.getItem('aiwrok_code_snippets');
  529.   if (!stored) return false;
  530.   
  531.   try {
  532.     var data = JSON.parse(stored, function(key, value) {
  533.       if (key === 'exportedAt' || key === 'createdAt') {
  534.         return parseDateFromString(value);
  535.       }
  536.       return value;
  537.     });
  538.    
  539.     this.snippets = data.snippets;
  540.     return true;
  541.   } catch (err) {
  542.     printl("加载代码片段错误:", err);
  543.     print.log("加载失败:", err);
  544.     return false;
  545.   }
  546. };

  547. printl("CodeSnippetManager类已定义");
  548. print.log("包含添加、搜索、导入导出等功能");

  549. // 创建代码片段管理器
  550. var snippetManager = new CodeSnippetManager();
  551. printl("创建代码片段管理器");
  552. print.log("snippetManager实例已创建");

  553. // 添加示例代码片段
  554. var snippet1 = snippetManager.addSnippet(
  555.   'React Hook',
  556.   'javascript',
  557.   'import React from \'react\';\\n\\nvar MyComponent = function() {\\n  var data = null;\\n  var setData = function() {};\\n  \\n  // 模拟 useState\\n  // 模拟 useEffect\\n  // 模拟 fetch 数据\\n  function fetchData() {\\n    // 模拟 API 调用\\n    var result = { title: \'Example Title\' };\\n    setData(result);\\n  }\\n  \\n  return React.createElement(\'div\', null, data ? data.title : \'Loading...\');\\n};\\n\\nmodule.exports = MyComponent;',
  558.   'React 组件模板 (ES5 版本)'
  559. );

  560. printl("添加代码片段1:", snippet1.name);
  561. print.log("snippet1:", snippet1.name);

  562. var snippet2 = snippetManager.addSnippet(
  563.   'API 客户端',
  564.   'javascript',
  565.   'function ApiClient(baseURL) {\\n  this.baseURL = baseURL;\\n}\\n\\nApiClient.prototype.request = function(endpoint, options) {\\n  options = options === undefined ? {} : options;\\n  var url = this.baseURL + endpoint;\\n  var config = {\\n    headers: {\\n      \'Content-Type\': \'application/json\'\\n    }\\n  };\\n  \\n  // 合并选项\\n  for (var key in options) {\\n    if (options.hasOwnProperty(key)) {\\n      config[key] = options[key];\\n    }\\n  }\\n  \\n  return {\\n    success: true,\\n    data: { message: \'Example API response\' },\\n    config: config\\n  };\\n};\\n\\n// 使用示例\\nvar api = new ApiClient(\'https://api.example.com\');\\nvar response = api.request(\'/users\');',
  566.   '通用 API 客户端类 (ES5 版本)'
  567. );

  568. printl("添加代码片段2:", snippet2.name);
  569. print.log("snippet2:", snippet2.name);

  570. // 保存到本地存储
  571. snippetManager.saveToStorage();
  572. printl("代码片段已保存到存储");
  573. print.log("保存到localStorage模拟");

  574. // 搜索功能测试
  575. var searchResults = snippetManager.searchSnippets('react');
  576. printl("搜索'react'的结果:", searchResults.length, "个片段");
  577. print.log("搜索结果:", searchResults.length);

  578. // 导出代码片段
  579. var exportedSnippets = snippetManager.exportSnippets();
  580. printl("导出的代码片段JSON:", exportedSnippets);
  581. print.log("exportSnippets():", exportedSnippets);

  582. // ==================== 11. 性能对比演示 ====================
  583. printl("");
  584. print.log("=== 11. 性能对比演示 ===");

  585. // 创建测试数据
  586. var testData = {
  587.   largeArray: [],
  588.   summary: {
  589.     total: 1000,
  590.     active: 500,
  591.     inactive: 500
  592.   }
  593. };

  594. printl("创建测试数据对象");
  595. print.log("包含1000个项目的数组");

  596. for (var k = 0; k < 1000; k++) {
  597.   testData.largeArray.push({
  598.     id: k,
  599.     name: '项目 ' + k,
  600.     status: k % 2 === 0 ? 'active' : 'inactive',
  601.     metadata: {
  602.       created: new Date(),
  603.       tags: ['tag1', 'tag2', 'tag3'],
  604.       config: { enabled: true, priority: k }
  605.     }
  606.   });
  607. }

  608. printl("测试数据创建完成,共", testData.largeArray.length, "个项目");
  609. print.log("testData包含", testData.largeArray.length, "个项目");

  610. // 测试序列化性能
  611. var startTime = Date.now();
  612. var serializedLarge = JSON.stringify(testData);
  613. var serializeTime = Date.now() - startTime;

  614. printl("序列化耗时:", serializeTime, "毫秒");
  615. print.log("JSON.stringify耗时:", serializeTime, "ms");

  616. var startTime2 = Date.now();
  617. var deserializedLarge = JSON.parse(serializedLarge);
  618. var deserializeTime = Date.now() - startTime2;

  619. printl("反序列化耗时:", deserializeTime, "毫秒");
  620. print.log("JSON.parse耗时:", deserializeTime, "ms");

  621. printl("总耗时:", serializeTime + deserializeTime, "毫秒");
  622. print.log("完整JSON操作总耗时:", serializeTime + deserializeTime, "ms");

  623. // ==================== 12. JSON 工具函数 ====================
  624. printl("");
  625. print.log("=== 12. JSON 工具函数 ===");

  626. function JsonUtils() {}

  627. JsonUtils.isValidJSON = function(str) {
  628.   try {
  629.     JSON.parse(str);
  630.     return true;
  631.   } catch (e) {
  632.     return false;
  633.   }
  634. };

  635. JsonUtils.safeStringify = function(obj, fallback, replacer) {
  636.   fallback = fallback === undefined ? '{}' : fallback;
  637.   replacer = replacer === undefined ? null : replacer;
  638.   try {
  639.     return JSON.stringify(obj, replacer, 2);
  640.   } catch (err) {
  641.     printl("safeStringify错误:", err);
  642.     print.log("安全序列化失败:", err);
  643.     return fallback;
  644.   }
  645. };

  646. JsonUtils.safeParse = function(str, fallback, reviver) {
  647.   fallback = fallback === undefined ? null : fallback;
  648.   reviver = reviver === undefined ? null : reviver;
  649.   try {
  650.     return JSON.parse(str, reviver);
  651.   } catch (err) {
  652.     printl("safeParse错误:", err);
  653.     print.log("安全解析失败:", err);
  654.     return fallback;
  655.   }
  656. };

  657. JsonUtils.validateObjectStructure = function(obj, requiredFields) {
  658.   var missing = [];
  659.   var invalid = [];
  660.   
  661.   for (var m = 0; m < requiredFields.length; m++) {
  662.     var field = requiredFields[m];
  663.     if (!(field in obj)) {
  664.       missing.push(field);
  665.     } else if (obj[field] === null || obj[field] === undefined || obj[field] === '') {
  666.       invalid.push(field);
  667.     }
  668.   }
  669.   
  670.   return {
  671.     isValid: missing.length === 0 && invalid.length === 0,
  672.     missing: missing,
  673.     invalid: invalid
  674.   };
  675. };

  676. printl("JsonUtils工具类已定义");
  677. print.log("包含isValidJSON, safeStringify, safeParse, validateObjectStructure");

  678. // 测试 JSON 工具
  679. var testValidJSON = '{"name": "AIWROK", "version": "1.0.0"}';
  680. var testInvalidJSON = '{"name": "AIWROK", "version": }';

  681. printl("测试有效JSON:", testValidJSON);
  682. print.log("testValidJSON:", testValidJSON);

  683. var validResult = JsonUtils.isValidJSON(testValidJSON);
  684. printl("有效JSON验证结果:", validResult);
  685. print.log("JsonUtils.isValidJSON(testValidJSON):", validResult);

  686. printl("测试无效JSON:", testInvalidJSON);
  687. print.log("testInvalidJSON:", testInvalidJSON);

  688. var invalidResult = JsonUtils.isValidJSON(testInvalidJSON);
  689. printl("无效JSON验证结果:", invalidResult);
  690. print.log("JsonUtils.isValidJSON(testInvalidJSON):", invalidResult);

  691. var safeParsed = JsonUtils.safeParse(testInvalidJSON, { error: true });
  692. printl("安全解析结果:", safeParsed);
  693. print.log("JsonUtils.safeParse(testInvalidJSON):", safeParsed);

  694. var testObj = { name: 'AIWROK', version: '1.0.0' };
  695. var required = ['name', 'version', 'author'];
  696. var validation = JsonUtils.validateObjectStructure(testObj, required);

  697. printl("对象结构验证:", validation);
  698. print.log("JsonUtils.validateObjectStructure:", validation);

  699. printl("");
  700. print.log("=== JSON处理完整示例完成 ===");
  701. printl("&#128161; 这些技巧在实际项目开发中非常有用!");
  702. print.log("所有JSON操作示例已完成!");
复制代码





untoAIWROK软件展示JavaScript各种语句标识符的用法nextAIWORK软件节点方法无碍示例子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件AIWROK软件苹果UI按钮Button方法示例
AIWROK软件苹果UI按钮Button方法示例
信息发布软件AIWROK软件苹果TAB界面视图示例
AIWROK软件苹果TAB界面视图示例
信息发布软件AIWROK苹果系统自带view视图简洁UI界面示例
AIWROK苹果系统自带view视图简洁UI界面示例
信息发布软件汇集HID安卓输入文字的方法和复制粘贴示例
汇集HID安卓输入文字的方法和复制粘贴示例
信息发布软件AIWROK软件找字与OCR方法汇总示例
AIWROK软件找字与OCR方法汇总示例
信息发布软件AIWROK软件找图方法汇总示例
AIWROK软件找图方法汇总示例
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件&#127983;AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-2-15 08:03 , Processed in 0.351430 second(s), 51 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表