{"id":16003037,"url":"https://github.com/cn-tower/format-to-json","last_synced_at":"2025-04-07T17:10:02.805Z","repository":{"id":46939156,"uuid":"165077125","full_name":"CN-Tower/format-to-json","owner":"CN-Tower","description":" An algorithm that can format a string to json-like template. 字符串JSON格式化的算法。","archived":false,"fork":false,"pushed_at":"2025-01-03T09:01:12.000Z","size":681,"stargazers_count":28,"open_issues_count":1,"forks_count":11,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-07T17:09:59.647Z","etag":null,"topics":["bejson","fmt2json","format-to-json","format2json","json","json-algorithm","json-api","json-editor","json-formatter","json-like","json-parser","json-schema","parse-to-json","to-json","zjson"],"latest_commit_sha":null,"homepage":"https://unpkg.com/format-to-json@3.0.3/index.html","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/CN-Tower.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}},"created_at":"2019-01-10T14:47:35.000Z","updated_at":"2025-01-17T16:06:58.000Z","dependencies_parsed_at":"2024-11-16T18:03:21.218Z","dependency_job_id":"907b1cc2-bb68-4cee-a2b1-676b4254bc83","html_url":"https://github.com/CN-Tower/format-to-json","commit_stats":{"total_commits":49,"total_committers":5,"mean_commits":9.8,"dds":0.326530612244898,"last_synced_commit":"877f4a8201d153cb6c9bda3307173007fd8ff2ac"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CN-Tower%2Fformat-to-json","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CN-Tower%2Fformat-to-json/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CN-Tower%2Fformat-to-json/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CN-Tower%2Fformat-to-json/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CN-Tower","download_url":"https://codeload.github.com/CN-Tower/format-to-json/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247694876,"owners_count":20980733,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bejson","fmt2json","format-to-json","format2json","json","json-algorithm","json-api","json-editor","json-formatter","json-like","json-parser","json-schema","parse-to-json","to-json","zjson"],"created_at":"2024-10-08T10:05:55.583Z","updated_at":"2025-04-07T17:10:02.770Z","avatar_url":"https://github.com/CN-Tower.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# format-to-json\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://unpkg.com/format-to-json@3.0.3/index.html\"\u003e\n    \u003cimg src=\"https://github.com/CN-Tower/format-to-json/blob/master/images/format_html.png?raw=true\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nPlayground: https://unpkg.com/format-to-json@3.0.3/index.html\u003cbr\u003e\n\n[![npm](https://img.shields.io/npm/v/format-to-json.svg)](https://www.npmjs.com/package/format-to-json)\n[![LICENSE MIT](https://img.shields.io/npm/l/format-to-json.svg)](https://github.com/CN-Tower/format-to-json/blob/master/LICENSE)\n\n\u003e Format string to a json like template\n\n- [Usages](#Usages)\n  - [In html](#in-html)\n  - [In javascript](#in-javascript)\n- [Interface](#Interface)\n  - [fmt2json](#mehtod-fmt2json)\n  - [FormatOptions](#interface-formatoptions)\n  - [FormatResult](#interface-formatresult)\n- [Terminal](#Terminal)\n\n## Usages\n\n### In html\n\n```html\n\u003cscript src=\"https://unpkg.com/format-to-json@3.0.3/fmt2json.min.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n  const source = `{\"zjson\":\"ZJSON\",\"description\":\"Online json formatter\",\"version\":\"v4.1.8\",\"updateTime\":\"2018-11-23\",\"url\":\"http://zjson.net\",\"project\":\"http://github.com/CN-Tower/zjson\",\"language\":[\"中文（简体）\",\"English\"],\"keywords\":[\"zjson\",\"json formatter\"],\"content\":{\"array\":[\"element 001\",\"element 002\"],\"boolean\":true,\"null\":null,\"number\":123,\"string\":\"Hello World\",\"object\":{\"property\":\"value\",\"key\":\"val\"}}}`;\n\n  const jsonString = fmt2json(source);\n  console.log(jsonString);\n  // =\u003e\n  `{\n  \"zjson\": \"ZJSON\",\n  \"description:\"Online json formatter\",\n  \"version\": \"v4.1.8\",\n  \"updateTime\": \"2018-11-23\",\n  \"url\": \"http://zjson.net\",\n  \"project\": \"http://github.com/CN-Tower/zjson\",\n  \"language\": [\n    \"中文（简体）\",\n    \"English\"\n  ],\n  \"keywords\": [\n    \"zjson\",\n    \"json formatter\"\n  ],\n  \"content\": {\n    \"array\": [\n      \"element 001\",\n      \"element 002\"\n    ],\n    \"boolean\": true,\n    \"null\": null,\n    \"number\": 123,\n    \"string\": \"Hello World\",\n    \"object\": {\n      \"property\": \"value\",\n      \"key\": \"val\"\n    }\n  }\n}`;\n\u003c/script\u003e\n```\n\n### In javascript\n\nRun: `npm install format-to-json --save`;\n\n```javascript\nconst fmt2json = require('format-to-json');\nconst source =\n  '{\"zjson\":\"ZJSON\",\"description\":\"Online json formatter\",\"version\":\"v4.1.8\",\"updateTime\":\"2018-11-23\",\"url\":\"http://zjson.net\",\"project\":\"http://github.com/CN-Tower/zjson\",\"language\":[\"中文（简体）\",\"English\"],\"keywords\":[\"zjson\",\"json formatter\"],\"content\":{\"array\":[\"element 001\",\"element 002\"],\"boolean\":true,\"null\":null,\"number\":123,\"string\":\"Hello World\",\"object\":{\"property\":\"value\",\"key\":\"val\"}}}';\n\nconst fmtInfo = fmt2json(source, { withDetails: true });\nconsole.log(fmtInfo.result);\n```\n\nOutput:\n\n```js\n{\n  result: '{\\r\\n' +\n    '  \"zjson\": \"ZJSON\",\\r\\n' +\n    '  \"description\": \"Online json formatter\",\\r\\n' +\n    '  \"version\": \"v4.1.8\",\\r\\n' +\n    '  \"updateTime\": \"2018-11-23\",\\r\\n' +\n    '  \"url\": \"http://zjson.net\",\\r\\n' +\n    '  \"project\": \"http://github.com/CN-Tower/zjson\",\\r\\n' +\n    '  \"language\": [\\r\\n' +\n    '    \"中文（简体）\",\\r\\n' +\n    '    \"English\"\\r\\n' +\n    '  ],\\r\\n' +\n    '  \"keywords\": [\\r\\n' +\n    '    \"zjson\",\\r\\n' +\n    '    \"json formatter\"\\r\\n' +\n    '  ],\\r\\n' +\n    '  \"content\": {\\r\\n' +\n    '    \"array\": [\\r\\n' +\n    '      \"element 001\",\\r\\n' +\n    '      \"element 002\"\\r\\n' +\n    '    ],\\r\\n' +\n    '    \"boolean\": true,\\r\\n' +\n    '    \"null\": null,\\r\\n' +\n    '    \"number\": 123,\\r\\n' +\n    '    \"string\": \"Hello World\",\\r\\n' +\n    '    \"object\": {\\r\\n' +\n    '      \"property\": \"value\",\\r\\n' +\n    '      \"key\": \"val\"\\r\\n' +\n    '    }\\r\\n' +\n    '  }',\n  fmtType: 'danger',\n  fmtSign: 'end',\n  fmtLines: 29,\n  fmtTime: 1.0678750276565552,\n  message: 'Expect a comma or a \"}\" in line: 29',\n  errFormat: true,\n  errIndex: 29,\n  errNear: '...\": \"val\"\\\\n    }\\\\n  }\u003e\u003e\u003e\u003e\u003e\u003e',\n  errExpect: '}'\n}\n```\n\n## Interface\n\n#### [Mehtod] fmt2json\n\n```typescript\ndeclare function fmt2json(source: string, options?: FormatOptions): string;\ndeclare function fmt2json(source: string, options: FormatOptions \u0026 { withDetails: true }): FormatResult;\n```\n\n#### [Interface] FormatOptions\n\n```typescript\ninterface FormatOptions {\n  indent?: number; // Integer, Large then 0, default: 2\n  expand?: boolean; // Default: true\n  strict?: boolean; // Default: false\n  escape?: boolean; // Default: false\n  unscape?: boolean; // Default: false\n  keyQtMark?: \"'\" | '\"' | ''; // Default: \"\\\"\"\n  valQtMark?: \"'\" | '\"'; // Default: \"\\\"\"\n}\n```\n\n#### [Interface] FormatResult\n\n```typescript\ninterface FormatResult {\n  result: string;\n  fmtType: 'info' | 'success' | 'warning' | 'danger';\n  fmtSign: 'ost' | 'col' | 'val' | 'end' | 'war' | 'scc' | 'err';\n  fmtLines: number;\n  fmtTime: number;\n  message: string;\n  errFormat: boolean;\n  errIndex: number;\n  errNear: string;\n  errExpect: string;\n}\n```\n\n## Terminal\n\nRun: `npm install -g format-to-json`  \nRun: `fmt2json -h`\n\n```terminal\nUsage: fmt2json [options]\n\nOptions:\n  -V, --version          output the version number\n  -v, --version          output the version number\n  -i, --indent \u003cindent\u003e  Indnet number.\n  -q, --qtMark \u003cqtMark\u003e  Quotation mark, one of ['\"\"', \"''\", '\"', \"'\"] (default: \"\\\"\\\"\")\n  -c, --collapse         Collapse the formatted results.\n  -e, --escape           Escape the formatted results.\n  -u, --unescape         Unescape source before format.\n  -s, --strict           Strict mode.\n  -d, --details          Return with formatted details info.\n  -h, --help             output usage information\n```\n\nRun: `fmt2json -i 4 -q \"'\" -d`\n\n```terminal\n√ Input a string to foramt: · [{name: \"Tom\", age: 28, gender: \"male\"}]\n\n==================================================================\n                [23:10:11] format-to-json(3.0.3)\n------------------------------------------------------------------\n[\n    {\n        name: 'Tom',\n        age: 28,\n        gender: 'male'\n    }\n]\n------------------------------------------------------------------\n{\n  fmtType: 'success',\n  fmtSign: 'scc',\n  fmtLines: 8,\n  fmtTime: 0.6254580020904541,\n  message: 'Success formated 8 lines!',\n  errFormat: false,\n  errIndex: NaN,\n  errNear: ''\n  errExpect: '',\n}\n==================================================================\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcn-tower%2Fformat-to-json","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcn-tower%2Fformat-to-json","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcn-tower%2Fformat-to-json/lists"}