Json与Python对象的双向绑定(jsonfy)

Json与Python对象的双向绑定(jsonfy)

今天,向大家介绍一款好用的json和对象的双向绑定工具 jsonfy(对 本人就是作者,欢迎大家使用,哈哈哈)
jsonfy github 地址 jsonfy github仓库地址
jsonfy 支持复杂 嵌套类型的对象和json互相转化,没有任何第三方依赖,在这个小框架,不,应该是小工具吧,运用到了许多python的特性,比如面向对象, 元类编程,属性描述符等。
整个工具核心代码仅仅200行,小巧又不失优雅。我们来看看如何使用吧

首先你要安装了pip python环境3 即可 (不支持2哈 python2已经淘汰了)

pip install jsonfy

import time
from datetime import datetime
from cn.jsonfy.core import DateTimeDesc, BaseJsonModel, DictDesc


class Foo(BaseJsonModel):
    infos1 = DictDesc("infos1")
    up = DateTimeDesc("up", format='%Y-%m-%d')
    down = DateTimeDesc("down")
    
    
if __name__ == '__main__':
    f = Foo()
    _fake_time = datetime.now()
    f.up = _fake_time
    f.down = _fake_time
    _dict = {"key": "value"}
    f.infos1 = _dict
    
    print(f.toJson())
    f_obj = f.fromJson(f.toJson())
    print(f_obj)
 

来看看结果吧

日期类型 你可以传入你自己想要的格式, 如果你不想某个字段被序列化
filed=IntDesc(‘filed’,hide=true) 在对应的字段属性描述符加上hide=true即可 在代码的examples里还有更加复杂 嵌套的类型的例子 ,感兴趣的话可以看看

{"infos1": {"key": "value"}, "up": "2020-01-17", "down": "2020-01-17 20:17:51"}
<__main__.Foo object at 0x00000196B0130320>

欢迎大家star 和pip install 使用哦,或者提issues

下面是jsonfy 项目的readme:

1. Jsonfy: Lightweight two-way binding of JSON and object without third-party dependency

2. pip install jsonfy

3. How to use? you can see examples or Quick start

4. Welcome to submit your code and comments to a better Jsonfy

5. Quick start:

import time
from datetime import datetime
from cn.jsonfy.core import DateTimeDesc, BaseJsonModel, DictDesc

class Foo(BaseJsonModel):
    infos1 = DictDesc("infos1")
    up = DateTimeDesc("up", format='%Y-%m-%d')
    down = DateTimeDesc("down")
    
    
if __name__ == '__main__':
    f = Foo()
    _fake_time = datetime.now()
    f.up = _fake_time
    f.down = _fake_time
    _dict = {"key": "value"}
    f.infos1 = _dict
    
    print(f.toJson())
    f_obj = f.fromJson(f.toJson())
    print(f_obj)
posted @ 2020-01-17 20:25  pointsl  阅读(323)  评论(0编辑  收藏  举报