python类转json,Python类转json

import json

import codecs

def utf16_le_to_utf_8(data):

decode = codecs.getdecoder('utf_16_le')

rv = decode(data)[0]

return rv

def _to_json_obj(src, anchor=None):

def _judge_anchor(_item, _src, _anchor):

__anchor = _anchor if isinstance(_src, (tuple, list, dict)) else _src

_valid_item = True if not isinstance(_anchor, type(_item)) else False

return _valid_item, __anchor

def _build_in_to_json_obj(_src):

if isinstance(_src, bytes):

_dst = utf16_le_to_utf_8(_src)

else:

_dst = _src

return _dst

def _list_to_json_obj(_src, _anchor=None):

_dst = []

for i in range(0, len(_src)):

_dst.append(_to_json_obj(_src[i], anchor=_anchor))

return _dst

def _dict_to_json_obj(_src, _anchor=None):

_dst = dict()

for k, v in _src.items():

_dst[k] = _to_json_obj(v, anchor=_anchor)

return _dst

def _class_to_json_obj(_src, _anchor=None):

_dst = dict()

for k, v in _src.__dict__.items():

valid_item, __anchor = _judge_anchor(v, _src, _anchor)

if valid_item:

_dst[k] = _to_json_obj(v, anchor=__anchor)

return _dst

if isinstance(src, (type(None), bool, int, float, str, bytes)):

dst = _build_in_to_json_obj(src)

elif isinstance(src, (list, tuple)):

dst = _list_to_json_obj(src, _anchor=anchor)

elif isinstance(src, dict):

dst = _dict_to_json_obj(src, _anchor=anchor)

else:

dst = _class_to_json_obj(src, _anchor=anchor)

return dst

def to_json_str(anything):

obj = _to_json_obj(anything)

return json.dumps(obj, indent=4, ensure_ascii=False)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值