<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      python-json的自定義編碼器與自定義解碼器

      json的數據類型有限,在實際業務中可能會遇到數據無法使用JSON編碼的問題。如果我們需要轉發的數據有大量或位置不規則的json無法解析數據類型時,事先處理就變成了一件比較麻煩的事。這里可以使用json模塊的編碼器和解碼器來解決這個問題。

      自定義編碼器

      import json
      from decimal import Decimal
      from datetime import datetime
      
      
      # json擴展編碼器
      class MyJsonEncoder(json.JSONEncoder):
      
          def default(self, field):
              """
              :param field: 原始的數據
              :return: 處理后的數據
              """
              if isinstance(field, datetime):
                  return field.strftime('%Y-%m-%d %H:%M:%S')
              elif isinstance(field, Decimal):
                  return str(field)
              else:
                  return json.JSONEncoder.default(self, field)
      
      
      info = [Decimal("1"), datetime.now(), {"decimal": Decimal("2"), "datetime": datetime.now()}]
      
      print(json.dumps(info, cls=MyJsonEncoder))  # cls -> 指定JSON編碼器
      
      ==>
      
      ["1", "2023-02-03 16:48:29", {"decimal": "2", "datetime": "2023-02-03 16:48:29"}]
      

      自定義解碼器

      # json自定義解碼器
      class MyJsonDecoder(json.JSONDecoder):
      
          def __init__(self, *args, **kwargs):
              super().__init__(
                  object_hook=self.object_hook,
                  parse_float=self.parse_float,
                  parse_int=self.parse_int,
                  parse_constant=self.parse_constant,
                  # object_pairs_hook=self.object_pairs_hook,
                  *args, **kwargs)
      
          def object_hook(self, o):
              """
              對字典解碼,如果同時設置'object_pairs_hook','object_hook'將不生效
              :param o: 原始數據字典
              :return: 實際需要的數據
              """
              return o
      
          def parse_float(self, o):
              """
              對浮點型解碼
              :param o: 原始浮點型
              :return: 實際需要的數據
              """
              return o
      
          def parse_int(self, o):
              """
              對整型解碼
              :param o: 原始整型
              :return: 實際需要的數據
              """
              return o
      
          def parse_constant(self, o):
              """
              對于'-Infinity', 'Infinity', 'NaN'之類的特殊值進行解碼
              :param o:
              :return:
              """
              return o
      
          def object_pairs_hook(self, o):
              """
              對有序列表解碼,如果同時設置'object_hook','object_hook'將不生效
              :param o: 原始數據數據
              :return: 實際需要的數據
              """
              return o
      
      
      info = '[1, "2023-02-03 16:48:29", {"decimal": "2.2", "datetime": "2023-02-03 16:48:29"}, [3, "4"]]'
      print(json.loads(info, cls=MyJsonDecoder))
      
      ==>
      
      ['1', '2023-02-03 16:48:29', {'decimal': '2.2', 'datetime': '2023-02-03 16:48:29'}, ['3', '4']]
      

      實際舉例-支持decimal格式數據

      import json
      from decimal import Decimal
      
      
      # json自定義編碼器
      class MyJsonEncoder(json.JSONEncoder):
      
          def default(self, field):
              if isinstance(field, Decimal):
                  return {"__class__": "Decimal", "value": str(field)}
              else:
                  return json.JSONEncoder.default(self, field)
      
      
      # json自定義解碼器
      class MyJsonDecoder(json.JSONDecoder):
      
          def __init__(self, *args, **kwargs):
              super().__init__(object_hook=self.object_hook, *args, **kwargs)
      
          def object_hook(self, o):
              if o.get('__class__') == "Decimal":
                  return Decimal(o.get('value', 0))
              return o
      
      
      info = [Decimal("1"), Decimal("1.1"), 
              {"decimal1": Decimal("2.1"), "decimal2": Decimal("2.2")},
              [Decimal("3.1"), Decimal("3.2")]]
      
      info1 = json.dumps(info, cls=MyJsonEncoder)
      info2 = json.loads(info1, cls=MyJsonDecoder)
      
      print(info1, end="\n\n")
      print(info2)
      
      ==>
      
      [{"__class__": "Decimal", "value": "1"}, {"__class__": "Decimal", "value": "1.1"}, {"decimal1": {"__class__": "Decimal", "value": "2.1"}, "decimal2": {"__class__": "Decimal", "value": "2.2"}}, [{"__class__": "Decimal", "value": "3.1"}, {"__class__": "Decimal", "value": "3.2"}]]
      
      [Decimal('1'), Decimal('1.1'), {'decimal1': Decimal('2.1'), 'decimal2': Decimal('2.2')}, [Decimal('3.1'), Decimal('3.2')]]
      
      posted @ 2023-02-03 17:58  最冷不過冬夜  閱讀(588)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 在线看无码的免费网站| 风流老熟女一区二区三区| 中文字幕一区二区精品区| 又粗又大又黄又硬又爽免费看| 高清无码午夜福利视频| 日韩丝袜人妻中文字幕| 国产一区二区三区九精品| 丰满的女邻居2| 亚洲老熟女一区二区三区| 日本高清中文字幕免费一区二区| 色窝窝免费播放视频在线| 免费无码又爽又刺激高潮虎虎视频| 丰满人妻无码∧v区视频| 亚洲成人www| 国产精品无码无卡在线播放| 国产无遮挡裸体免费视频在线观看| 日韩精品亚洲国产成人av| 亚洲精品成人片在线观看精品字幕| 无套后入极品美女少妇| 国产乱久久亚洲国产精品| 永久免费AV无码国产网站| 国产在线观看播放av| 国内精品伊人久久久久777| 国产精品一区二区三区性色| 综合激情亚洲丁香社区| 2021国产成人精品久久| 亚洲一区二区啊射精日韩| 内射视频福利在线观看| 色综合天天综合网天天看片| 麻豆一区二区中文字幕| 国内极度色诱视频网站| 亚洲中文一区二区av| 蜜桃av一区二区高潮久久精品| 正在播放肥臀熟妇在线视频| 亚洲国产青草衣衣一二三区| 中文字幕热久久久久久久| 伊伊人成亚洲综合人网7777| 亚洲av一本二本三本| 视频一区二区 国产视频| 少妇无码av无码一区| 亚洲成在人线在线播放无码|