python json序列化嵌套的对象

先上代码

class to_wpf_object():
    def __init__(self, word_area_list):

        if word_area_list is None:
            self.has_caption = False
            self.word_area_list = []
            return

        self.has_caption = True
        self.word_area_list = word_area_list

    def obj_2_dict(self):
        return {
            'has_caption': self.has_caption,
            'word_area_list': [word.obj_2_dict() for word in self.word_area_list]
        }

    def obj_2_json_string(self):
        dict = self.obj_2_dict()

        json_string = json.dumps(dict, ensure_ascii=False)
        # json_string =json.dumps(self, default=obj_2_json, ensure_ascii=False)
        return json_string


class word_area():
    def __init__(self, unicom_area):
        self.left_border = unicom_area.left_border
        self.right_border = unicom_area.right_border
        self.upper_border = unicom_area.upper_border
        self.bottom_border = unicom_area.bottom_border

        #self.alphabet_count = 1
        # 图像展示的内容
        self.content = unicom_area.content

    def add_unicom_area(self, unicom_area):
        self.left_border = min(self.left_border, unicom_area.left_border)
        self.right_border = max(self.right_border, unicom_area.right_border)
        self.upper_border = min(self.upper_border, unicom_area.upper_border)
        self.bottom_border = max(self.bottom_border, unicom_area.bottom_border)

        #self.alphabet_count = self.alphabet_count + 1

        self.content = self.content + unicom_area.content

    def obj_2_dict(self):
        return {
            'left_border':self.left_border,
            'right_border': self.right_border,
            'upper_border': self.upper_border,
            'bottom_border': self.bottom_border,
            'content': self.content
        }

    def to_json_string(self):
        dict = {}
        dict['left_border'] = self.left_border
        dict['right_border'] = self.right_border
        dict['upper_border'] = self.upper_border
        dict['bottom_border'] = self.bottom_border
        #dict['alphabet_count'] = self.alphabet_count
        dict['content'] = self.content

        json_string = json.dumps(dict, ensure_ascii=False)
        return json_string

由于csdn的新版编辑器出bug了,就长话短说了。使用 json.dumps需要把对象整体拼成一个字典,对象中对象的value值也是一个dict或者是[{}, {}, {}...]。

千万不要先将内部的对象序列化成字符串,然后再序列化外边的对象。再复杂的结构都可以表示为一个dict,而之前不需要做任何序列化操作。



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值