{"id":20086971,"url":"https://github.com/porky-chen/flatten-object-sdk","last_synced_at":"2026-02-15T07:32:27.371Z","repository":{"id":259699014,"uuid":"878874995","full_name":"porky-chen/flatten-object-sdk","owner":"porky-chen","description":"A powerful SDK for complex object manipulation, including deep flattening, unflattening, property checks, and modifications.","archived":false,"fork":false,"pushed_at":"2024-11-04T17:56:32.000Z","size":5310,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-08T05:44:06.537Z","etag":null,"topics":["deep-flattening","flatten-object","sdk","unflattening"],"latest_commit_sha":null,"homepage":"https://porky-chen.github.io/zeoblog","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/porky-chen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-26T10:52:23.000Z","updated_at":"2024-11-04T17:54:50.000Z","dependencies_parsed_at":"2024-10-27T12:59:11.853Z","dependency_job_id":"7e68cf0a-43a0-4145-a91f-5561e24710ff","html_url":"https://github.com/porky-chen/flatten-object-sdk","commit_stats":null,"previous_names":["porky-chen/flatten-object-sdk"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/porky-chen/flatten-object-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porky-chen%2Fflatten-object-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porky-chen%2Fflatten-object-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porky-chen%2Fflatten-object-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porky-chen%2Fflatten-object-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/porky-chen","download_url":"https://codeload.github.com/porky-chen/flatten-object-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porky-chen%2Fflatten-object-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29472880,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T06:58:05.414Z","status":"ssl_error","status_checked_at":"2026-02-15T06:58:05.085Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-flattening","flatten-object","sdk","unflattening"],"created_at":"2024-11-13T16:03:17.145Z","updated_at":"2026-02-15T07:32:27.354Z","avatar_url":"https://github.com/porky-chen.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flatten Object SDK\n\n`flatten-object-sdk` 是一个轻量级的 JavaScript 库，专为开发者简化复杂的嵌套对象管理而设计。它提供了将多层嵌套对象平展为一维键值对并重建原始结构的方法，非常适合数据存储、处理或传输等场景，在这些场景中，嵌套对象的结构会增加数据操作的复杂性。\n\n## 背景\n\n在处理 API 数据、复杂数据结构或数据库数据时，开发者通常会遇到深层嵌套的对象，操作这些嵌套对象可能非常麻烦，尤其是在将它们转换为平展结构用于存储或数据索引时。`flatten-object-sdk` 通过将嵌套结构转为平展结构并支持反向操作，使处理数组、符号等复杂数据类型更加简便。\n\n## 功能特性\n\n- **嵌套对象平展**：将复杂的多层对象转换为一维平展结构。\n- **恢复嵌套结构**：将平展的对象重建为原始嵌套结构。\n- **属性管理**：提供属性检查、添加和删除的辅助方法。\n- **支持数组与符号**：优雅地处理数组、符号和其他 JavaScript 数据类型。\n- **灵活的符号支持**：支持点号和括号符号，便于读写操作。\n\n## 安装\n\n可以通过 NPM 安装：\n\n```bash\nnpm install flatten-object-sdk\n```\n## 使用方法\n\n要使用 flatten-object-sdk，首先导入并初始化 SDK：\n```bash\nconst ObjectManipulator = require('flatten-object-sdk');\nconst objManipulator = new ObjectManipulator();\n```\n## 示例\n\n下面是一些主要功能的使用示例：\n\n### 1. 平展一个复杂对象\n\n假设我们有一个包含数组和子对象的嵌套对象：\n```bash\nconst complexObject = {\n  a: 1,\n  b: 'Joy',\n  cell: {\n    c_a: '2',\n    c_b: 'xxx',\n    deep: {\n      deep_a: 'inner',\n      deep_b: 10\n    }\n  },\n  arr: [1, 2, 'apple', 'ios', 'JavaScript', { arr_a: 'node', arr_b: 'TS' }]\n};\n\nconst flatObject = objManipulator.flatten(complexObject);\n\nconsole.log(flatObject);\n```\n输出：\n```bash\n{\n  \"a\": 1,\n  \"b\": \"Joy\",\n  \"cell.c_a\": \"2\",\n  \"cell.c_b\": \"xxx\",\n  \"cell.deep.deep_a\": \"inner\",\n  \"cell.deep.deep_b\": 10,\n  \"arr[0]\": 1,\n  \"arr[1]\": 2,\n  \"arr[2]\": \"apple\",\n  \"arr[3]\": \"ios\",\n  \"arr[4]\": \"JavaScript\",\n  \"arr[5].arr_a\": \"node\",\n  \"arr[5].arr_b\": \"TS\"\n}\n```\n这种平展结构特别适合存储在键值数据库中，或用于 API 传输，能将嵌套数据结构转为平展形式。\n\n### 2. 将平展对象还原为嵌套结构\n\n使用 unflatten 方法可将平展对象还原为原始结构：\n```bash\nconst flatObject = {\n  \"a\": 1,\n  \"b\": \"Joy\",\n  \"cell.c_a\": \"2\",\n  \"cell.c_b\": \"xxx\",\n  \"cell.deep.deep_a\": \"inner\",\n  \"cell.deep.deep_b\": 10,\n  \"arr[0]\": 1,\n  \"arr[1]\": 2,\n  \"arr[2]\": \"apple\",\n  \"arr[3]\": \"ios\",\n  \"arr[4]\": \"JavaScript\",\n  \"arr[5].arr_a\": \"node\",\n  \"arr[5].arr_b\": \"TS\"\n};\n\nconst complexObject = objManipulator.unflatten(flatObject);\n\nconsole.log(complexObject);\n```\n输出：\n```bash\n{\n  a: 1,\n  b: 'Joy',\n  cell: {\n    c_a: '2',\n    c_b: 'xxx',\n    deep: {\n      deep_a: 'inner',\n      deep_b: 10\n    }\n  },\n  arr: [\n    1,\n    2,\n    'apple',\n    'ios',\n    'JavaScript',\n    { arr_a: 'node', arr_b: 'TS' }\n  ]\n}\n```\n这在接收平展数据并恢复为嵌套对象时非常有用。\n\n### 3. 其他属性操作\n\n该 SDK 还提供方法来检查、添加和删除对象中的属性。\n\n#### 检查属性是否存在\n```bash\nconst exists = objManipulator.hasProperty(complexObject, 'cell.deep.deep_a');\nconsole.log(exists);  // 输出: true\n```\n#### 添加新属性\n```bash\nobjManipulator.setProperty(complexObject, 'newProperty', 'value');\nconsole.log(complexObject.newProperty);  // 输出: 'value'\n```\n#### 删除属性\n```bash\nobjManipulator.deleteProperty(complexObject, 'a');\nconsole.log(complexObject.a);  // 输出: undefined\n```\n## 高级用法\n\n支持自定义符号\n\nflatten-object-sdk 支持点号（.）和方括号（[]）符号，便于数组与对象的混合操作，开发者可以自定义数据结构并灵活控制数据访问方式。\n\n## 错误处理\n\nSDK 对无效或未定义的属性路径具有容错处理能力，确保在不同的运行环境中能保持稳定的表现。\n\n## 许可证\n\n本项目采用 MIT 许可证。详见 LICENSE 文件。\n\n## 贡献\n\n欢迎贡献！您可以提交 pull request 或提出 issue 来帮助改进 flatten-object-sdk。\n\n该版本增加了背景说明、使用场景，详细说明了主要功能的使用步骤，适合希望在中文环境下了解和使用该 SDK 的用户。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fporky-chen%2Fflatten-object-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fporky-chen%2Fflatten-object-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fporky-chen%2Fflatten-object-sdk/lists"}