当然可以,以下是一个示例的GitHub项目简介:
---
# ClassJsonMapper
[![GitHub license](https://img.shields.io/github/license/pymili/ClassJsonMapper)](LICENSE)
[![PyPI version](https://img.shields.io/pypi/v/classjsonmapper)](https://pypi.org/project/classjsonmapper/)
[![Documentation](https://readthedocs.org/projects/classjsonmapper/badge/?version=latest)](https://classjsonmapper.readthedocs.io/en/latest/)
**ClassJsonMapper** 是一个易于使用的Python库,旨在简化JSON数据与类对象之间的映射和转换过程。通过自定义类方法,它使得处理JSON文件变得直观、安全且高效。
### 特性
- **自动映射**:将JSON数据直接加载到自定义类实例中,并支持反向转换为JSON格式。
- **类型检查**:在解析和序列化过程中提供严格的类型检查,确保数据一致性。
- **错误处理**:封装了自定义异常类型,如`FilePathError`和`JsonFileError`,用于清晰地报告可能遇到的问题。
- **灵活性**:支持多种模式打开文件,以及创建不存在的文件功能。可以通过表达式,快速查询或更改json数据。
- **上下文管理器支持**:通过 `with` 语句轻松实现资源的自动管理和清理。
### 安装
```bash
pip install classjsonmapper
```
### 快速开始
```python
import time
import ClassJsonMapper
start = time.time()
with ClassJsonMapper.Mapper("test.json") as mapper:
# print(mapper.read())
# print(mapper.get("name"))
# print(mapper.get("age"))
# print(mapper.get("dict"))
# print(mapper.get("dict.1"))
# print(mapper.get("list"))
# print(mapper.get("list.0"))
# print(mapper.get("list.[0:2]"))
# print(mapper.get("list")[0:2])
print(mapper.set("age", 19))
print(mapper.set("dict.1", "Python"))
print(mapper.set("list.6.0.1", "Python!"))
print(mapper.set("list.6.0.2", "Python!"))
# print(mapper.get("wapPopAdvert.url"))
# print(mapper.get("wapPopAdvert.background"))
# print(mapper.get("topicData"))
mapper.write()
end = time.time()
print(f"耗时: {end - start}")
```
访问官方文档以获取详细信息和更多使用示例:
https://?????
欢迎贡献代码、提出问题或提交建议,共同优化和完善此库!
Raw data
{
"_id": null,
"home_page": "https://github.com/PYmili/ClassJsonMapper",
"name": "ClassJsonMapper",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "json,mapping,data serialization,object mapping",
"author": "PYmili",
"author_email": "mc2005wj@163.com",
"download_url": "https://files.pythonhosted.org/packages/de/6b/9a74459e1dd7f0db6d35edea4be6667bc37f309f9b9e81198617385fb672/ClassJsonMapper-0.1b1.tar.gz",
"platform": null,
"description": "\u5f53\u7136\u53ef\u4ee5\uff0c\u4ee5\u4e0b\u662f\u4e00\u4e2a\u793a\u4f8b\u7684GitHub\u9879\u76ee\u7b80\u4ecb\uff1a\r\n\r\n---\r\n\r\n# ClassJsonMapper\r\n\r\n[![GitHub license](https://img.shields.io/github/license/pymili/ClassJsonMapper)](LICENSE)\r\n[![PyPI version](https://img.shields.io/pypi/v/classjsonmapper)](https://pypi.org/project/classjsonmapper/)\r\n[![Documentation](https://readthedocs.org/projects/classjsonmapper/badge/?version=latest)](https://classjsonmapper.readthedocs.io/en/latest/)\r\n\r\n**ClassJsonMapper** \u662f\u4e00\u4e2a\u6613\u4e8e\u4f7f\u7528\u7684Python\u5e93\uff0c\u65e8\u5728\u7b80\u5316JSON\u6570\u636e\u4e0e\u7c7b\u5bf9\u8c61\u4e4b\u95f4\u7684\u6620\u5c04\u548c\u8f6c\u6362\u8fc7\u7a0b\u3002\u901a\u8fc7\u81ea\u5b9a\u4e49\u7c7b\u65b9\u6cd5\uff0c\u5b83\u4f7f\u5f97\u5904\u7406JSON\u6587\u4ef6\u53d8\u5f97\u76f4\u89c2\u3001\u5b89\u5168\u4e14\u9ad8\u6548\u3002\r\n\r\n### \u7279\u6027\r\n- **\u81ea\u52a8\u6620\u5c04**\uff1a\u5c06JSON\u6570\u636e\u76f4\u63a5\u52a0\u8f7d\u5230\u81ea\u5b9a\u4e49\u7c7b\u5b9e\u4f8b\u4e2d\uff0c\u5e76\u652f\u6301\u53cd\u5411\u8f6c\u6362\u4e3aJSON\u683c\u5f0f\u3002\r\n- **\u7c7b\u578b\u68c0\u67e5**\uff1a\u5728\u89e3\u6790\u548c\u5e8f\u5217\u5316\u8fc7\u7a0b\u4e2d\u63d0\u4f9b\u4e25\u683c\u7684\u7c7b\u578b\u68c0\u67e5\uff0c\u786e\u4fdd\u6570\u636e\u4e00\u81f4\u6027\u3002\r\n- **\u9519\u8bef\u5904\u7406**\uff1a\u5c01\u88c5\u4e86\u81ea\u5b9a\u4e49\u5f02\u5e38\u7c7b\u578b\uff0c\u5982`FilePathError`\u548c`JsonFileError`\uff0c\u7528\u4e8e\u6e05\u6670\u5730\u62a5\u544a\u53ef\u80fd\u9047\u5230\u7684\u95ee\u9898\u3002\r\n- **\u7075\u6d3b\u6027**\uff1a\u652f\u6301\u591a\u79cd\u6a21\u5f0f\u6253\u5f00\u6587\u4ef6\uff0c\u4ee5\u53ca\u521b\u5efa\u4e0d\u5b58\u5728\u7684\u6587\u4ef6\u529f\u80fd\u3002\u53ef\u4ee5\u901a\u8fc7\u8868\u8fbe\u5f0f\uff0c\u5feb\u901f\u67e5\u8be2\u6216\u66f4\u6539json\u6570\u636e\u3002\r\n- **\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u652f\u6301**\uff1a\u901a\u8fc7 `with` \u8bed\u53e5\u8f7b\u677e\u5b9e\u73b0\u8d44\u6e90\u7684\u81ea\u52a8\u7ba1\u7406\u548c\u6e05\u7406\u3002\r\n\r\n### \u5b89\u88c5\r\n```bash\r\npip install classjsonmapper\r\n```\r\n\r\n### \u5feb\u901f\u5f00\u59cb\r\n```python\r\nimport time\r\nimport ClassJsonMapper\r\n\r\n\r\nstart = time.time()\r\nwith ClassJsonMapper.Mapper(\"test.json\") as mapper:\r\n # print(mapper.read())\r\n # print(mapper.get(\"name\"))\r\n # print(mapper.get(\"age\"))\r\n # print(mapper.get(\"dict\"))\r\n # print(mapper.get(\"dict.1\"))\r\n # print(mapper.get(\"list\"))\r\n # print(mapper.get(\"list.0\"))\r\n # print(mapper.get(\"list.[0:2]\"))\r\n # print(mapper.get(\"list\")[0:2])\r\n print(mapper.set(\"age\", 19))\r\n print(mapper.set(\"dict.1\", \"Python\"))\r\n print(mapper.set(\"list.6.0.1\", \"Python!\"))\r\n print(mapper.set(\"list.6.0.2\", \"Python!\"))\r\n\r\n # print(mapper.get(\"wapPopAdvert.url\"))\r\n # print(mapper.get(\"wapPopAdvert.background\"))\r\n # print(mapper.get(\"topicData\"))\r\n\r\n mapper.write()\r\nend = time.time()\r\nprint(f\"\u8017\u65f6: {end - start}\")\r\n```\r\n\r\n\u8bbf\u95ee\u5b98\u65b9\u6587\u6863\u4ee5\u83b7\u53d6\u8be6\u7ec6\u4fe1\u606f\u548c\u66f4\u591a\u4f7f\u7528\u793a\u4f8b\uff1a\r\nhttps://?????\r\n\r\n\u6b22\u8fce\u8d21\u732e\u4ee3\u7801\u3001\u63d0\u51fa\u95ee\u9898\u6216\u63d0\u4ea4\u5efa\u8bae\uff0c\u5171\u540c\u4f18\u5316\u548c\u5b8c\u5584\u6b64\u5e93\uff01\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "ClassJsonMapper \u662f\u4e00\u4e2a\u6613\u4e8e\u4f7f\u7528\u7684Python\u5e93\uff0c\u65e8\u5728\u7b80\u5316JSON\u6570\u636e\u4e0e\u7c7b\u5bf9\u8c61\u4e4b\u95f4\u7684\u6620\u5c04\u548c\u8f6c\u6362\u8fc7\u7a0b\u3002\u901a\u8fc7\u81ea\u5b9a\u4e49\u7c7b\u65b9\u6cd5\uff0c\u5b83\u4f7f\u5f97\u5904\u7406JSON\u6587\u4ef6\u53d8\u5f97\u76f4\u89c2\u3001\u5b89\u5168\u4e14\u9ad8\u6548\u3002",
"version": "0.1b1",
"project_urls": {
"Homepage": "https://github.com/PYmili/ClassJsonMapper"
},
"split_keywords": [
"json",
"mapping",
"data serialization",
"object mapping"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1338f260d1285a7ee25b585d6bce40a854d8f0e79e9e9b8609c681a8a4e0d095",
"md5": "5f4ec7a2482da7097160b38d67a201d2",
"sha256": "0fe5fc8a6fd8d58756ba1d042274e2c3259e79879f629d39e39719f94c4445f9"
},
"downloads": -1,
"filename": "ClassJsonMapper-0.1b1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5f4ec7a2482da7097160b38d67a201d2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 6905,
"upload_time": "2024-02-05T13:13:28",
"upload_time_iso_8601": "2024-02-05T13:13:28.404171Z",
"url": "https://files.pythonhosted.org/packages/13/38/f260d1285a7ee25b585d6bce40a854d8f0e79e9e9b8609c681a8a4e0d095/ClassJsonMapper-0.1b1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "de6b9a74459e1dd7f0db6d35edea4be6667bc37f309f9b9e81198617385fb672",
"md5": "7750d4d08de06249716c0f5512671773",
"sha256": "4de1582dd9b9f8beb2fa5f3565be60307894421c4af1b7c4c2f6092e509e0453"
},
"downloads": -1,
"filename": "ClassJsonMapper-0.1b1.tar.gz",
"has_sig": false,
"md5_digest": "7750d4d08de06249716c0f5512671773",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 6584,
"upload_time": "2024-02-05T13:13:30",
"upload_time_iso_8601": "2024-02-05T13:13:30.962165Z",
"url": "https://files.pythonhosted.org/packages/de/6b/9a74459e1dd7f0db6d35edea4be6667bc37f309f9b9e81198617385fb672/ClassJsonMapper-0.1b1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-05 13:13:30",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "PYmili",
"github_project": "ClassJsonMapper",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "classjsonmapper"
}