golang(un)将结构编组为各种数据序列化格式的pythonic实现
pymarshal的Python项目详细描述
Golang PrMARHSARB< BR/> BR/> PyMaSHARL复制了(un-)编组结构在Pythonic中的特征。
而不是试图复制在GO中存在的确切特征,
PyMaSHAL旨在优雅、简单,并在
GO实现中修复缺陷,如:
-额外的密钥被悄悄忽略
缺乏强制性。字段< BR/>缺省值
BR/>超出了Golang实现的缺陷:
:PyMaSHARL的设计鼓励[编写单元可测试代码](http://miko.Hoo.COM/代码审阅指南)/[集成API文档](http://Github.com /j3ffubb/PyMARSHAR/树/主/实例/ APIODDOCS.MD)
当前支持的序列化格式
-[json](https://github.com/j3ffhubb/pymarshal/tree/master/examples/usage_json.md)
-[bson](https://github.com/j3ffhubb/pymarshal/tree/master/examples/usage_bson.md)
-[yaml](https://github.com/j3ffhubb/pymarshal/tree/master/examples/usage_yaml.md)
json,使用pyyaml加载或转储数据
对于“pymarshall.json”模块,没有显式的yaml模块。
和python3.x
[单击此处](https://github.com/j3ffhubb/mpwdga)例如,使用pymarshal
PyMarshal提供“类型断言”函数来强制类型,
和解组嵌套对象。
一个示例模型blah blah
参数:
-名称:a
类型:str
描述:a thing
-名称:b
类型:str
描述:b thing
必需:false
默认值:5
“
self.a=类型断言(a,str)
self.b=type_assert(b,int)
>>>;来自pymarshal.json import*
>;>x=marshal_json(mymodel(“test”,6))
>;>x
{“a”:“test”,“b”:6}
>;>y=unmarshal_json(x,mymodel)
>;>y.a
“test”
```
注意:您的类不能实现`\u call`(无论如何这是一个反模式
)。用`\u call`实现的任何东西都应该是
一个普通的、命名的方法。
如果您有一个构造函数的用例,该构造函数执行的不仅仅是简单的赋值,请使用单独的
['factory'静态方法](https://github.com/j3ffhubb/pymarshal/tree/master/examples/factory.md)。
v
不要使用golang“tag”语法,只需在类中创建一个
``u marshal_key_swap`和``u unmarshal_key_swap` dict,
任何重新命名的键都将在传递给
类构造函数之前或在被封送到json之前被交换。控制变量的完整列表
已记录在案
[此处](https://github.com/j3ffhubb/pymarshall/tree/master/examples/control_variables.md)。
pymarshall/tree/master/examples/(https://github.com/j3ffhubb/pymarshall/tree/master/examples/)
而不是试图复制在GO中存在的确切特征,
PyMaSHAL旨在优雅、简单,并在
GO实现中修复缺陷,如:
-额外的密钥被悄悄忽略
缺乏强制性。字段< BR/>缺省值
BR/>超出了Golang实现的缺陷:
:PyMaSHARL的设计鼓励[编写单元可测试代码](http://miko.Hoo.COM/代码审阅指南)/[集成API文档](http://Github.com /j3ffubb/PyMARSHAR/树/主/实例/ APIODDOCS.MD)
当前支持的序列化格式
-[json](https://github.com/j3ffhubb/pymarshal/tree/master/examples/usage_json.md)
-[bson](https://github.com/j3ffhubb/pymarshal/tree/master/examples/usage_bson.md)
-[yaml](https://github.com/j3ffhubb/pymarshal/tree/master/examples/usage_yaml.md)
json,使用pyyaml加载或转储数据
对于“pymarshall.json”模块,没有显式的yaml模块。
和python3.x
[单击此处](https://github.com/j3ffhubb/mpwdga)例如,使用pymarshal
PyMarshal提供“类型断言”函数来强制类型,
和解组嵌套对象。
一个示例模型blah blah
参数:
-名称:a
类型:str
描述:a thing
-名称:b
类型:str
描述:b thing
必需:false
默认值:5
“
self.a=类型断言(a,str)
self.b=type_assert(b,int)
>>>;来自pymarshal.json import*
>;>x=marshal_json(mymodel(“test”,6))
>;>x
{“a”:“test”,“b”:6}
>;>y=unmarshal_json(x,mymodel)
>;>y.a
“test”
```
注意:您的类不能实现`\u call`(无论如何这是一个反模式
)。用`\u call`实现的任何东西都应该是
一个普通的、命名的方法。
如果您有一个构造函数的用例,该构造函数执行的不仅仅是简单的赋值,请使用单独的
['factory'静态方法](https://github.com/j3ffhubb/pymarshal/tree/master/examples/factory.md)。
v
不要使用golang“tag”语法,只需在类中创建一个
``u marshal_key_swap`和``u unmarshal_key_swap` dict,
任何重新命名的键都将在传递给
类构造函数之前或在被封送到json之前被交换。控制变量的完整列表
已记录在案
[此处](https://github.com/j3ffhubb/pymarshall/tree/master/examples/control_variables.md)。
pymarshall/tree/master/examples/(https://github.com/j3ffhubb/pymarshall/tree/master/examples/)