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)
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在JSONEditor中实现数据双向绑定,你需要监听JSONEditor实例的`change`事件,并在事件处理程序中更新你的Vue组件的数据。以下是一个示例: ``` <template> <div> <div ref="editor"></div> <pre>{{jsonData}}</pre> </div> </template> <script> import JSONEditor from 'jsoneditor' export default { data() { return { jsonData: { // 初始数据 name: 'John Doe', age: 30, address: { city: 'New York', state: 'NY' } } } }, mounted() { const container = this.$refs.editor const editor = new JSONEditor(container, { // 指定JSONEditor的模式为tree mode: 'tree', // 设置JSONEditor的初始数据 startval: this.jsonData }) // 监听JSONEditor实例的change事件 editor.on('change', () => { // 更新组件的jsonData数据 this.jsonData = editor.get() }) } } </script> ``` 在这个示例中,我们使用Vue的数据选项中的`jsonData`属性来存储我们的JSON数据。在mounted钩子函数中,我们创建了一个JSONEditor实例,并将其附加到我们之前创建的div元素上。我们指定JSONEditor的模式为`tree`,并将组件的`jsonData`数据作为JSONEditor的初始数据。 我们还监听了JSONEditor实例的`change`事件,并在事件处理程序中使用`editor.get()`方法获取JSONEditor实例的当前数据,并将其更新到组件的`jsonData`数据中。因为`jsonData`数据是Vue响应式数据,所以这将自动更新组件中任何使用`jsonData`的地方。 希望这可以帮助你在JSONEditor中实现数据双向绑定

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值