• 【Python】JSON格式文件处理


    JSON格式

    Pyhton数据转化为JSON格式的过程叫做序列化,把JSON格式转化为Python数据类型的过程叫反序列化

    • JSON数据与Python数据之间的相互转化
      在这里插入图片描述
    • Python自带处理JSON数据的json模块。该模块的 d u m p s \color{red}{dumps} dumps实现Python数据转为JSON数据; l o a d s \color{red}{loads} loads实现JSON数据转为Python数据。
      import json                                 #导入json模块
      d = {'Bob': 20, 'Jam': '31', 'Linda': 13}   #定义字典对象d
      print('字典格式:', d)                        #打印字典
      d_json= json.dumps(d)                       #通过dumps把字典对象转为JSON类型
      print('JSON格式:', d_json)                  #打印JSON
      d_json_p = json.loads(d_json)               #把JSON格式转为Python的字典格式
      print('字典格式:', d_json_p)                 #打印字典
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      执行结果如下:
      在这里插入图片描述

    读写JSON文件

    Python的json模块为读写JSON文件提供了 d u m p \color{red}{dump} dump l o a d \color{red}{load} load操作对象。
    json.dump(obj,f,ensure_ascii=True):用于把Python数据写入JSON文件。

    obj参数:为Python语言数据对象。
    f参数:以字符串形式指明需要存储的文件名,可以带路径,建议加上拓展名。
    ensure_ascii参数:默认值为True,只接受ASCII表里的数据类型;为False时,可以接受其他非ASCII类型的数据(包括中文)。

    json.load(f,...):从JSON文件里读取数据并转为Python数据类型。f参数:以字符串形式指明需要存储的文件名。

    • 示例
      import json                                                     #导入json模块
      import sys                                                      #导入sys模块
      
      def writeToJSON(filename, dictObject):
          '''定义写JSON文件函数'''
          flag = False
          if type(dictObject) != dict:                                #只允许字典类型数据保存
              return flag
          try:                                                        #捕捉异常
              f = open(filename, 'w')                                 #以写方式的打开指定的JSON文件
              json.dump(dictObject, f, ensure_ascii=False)            #以JSON格式写入数据
              flag = True
          except:
              print('往%s文件写入数据出错!'%(filename))
          finally:
              if flag:
                  f.close()                                           #写完数据,关闭文件
          return flag                                                 #返回写文件是否正常标志值
      
      def readFromJSON(filename):
          '''定义读JSON文件函数'''
          flag = False
          dictObject = {}
          try:
              f = open(filename, 'r')                                 #打开需要读的JSON文件
              dictObject = json.load(f)                               #读取JSON文件数据并转为Python的字典对象
              flag = True
          except:
              print('从$s读取JSON数据出错!'%(filename))
          finally:
              if flag:
                  f.close()                                           #关闭读取文件   
          return dictObject                                           #返回读取字典类型数据
      
      c = {'name':'Bob', 'age': 18, 'birthday':'2003年10月20日'}
      filename = 'info.json'                                          #指定JSON的文件名称
      f_json = writeToJSON(filename, c)                               #调用writeToJSON函数将数据写入JSON文件
      if f_json:
          print('信息保存至JSON文件成功!')
      else:
          sys.exit()                                                  #调用writeToJSON函数失败,退出程序
      g_c = readFromJSON(filename)                                    #调用readFromJSON函数读取文件中的数据
      if g_c:
          print(g_c)                                                  #打印返回的字典对象数据
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44

    执行结果如下:
    在这里插入图片描述
    在脚本的路径下可以发现“info.json”文件,打开内容如下:
    在这里插入图片描述

  • 相关阅读:
    java基于安卓Android/微信小程序的高校校园跑腿系统 uniapp
    数学建模——非线性规划
    【Java】Scanner.nextLine() 返回空行/不起作用(吸收换行符)
    【Linux】VMware
    MongoDB常用的语句
    c#学习笔记-继承
    AutoGluon学习笔记
    动手从0实现 softmax 回归
    uniapp支付之APP微信支付unicloud版(附源码)
    Python(Web时代)—— Django的模板
  • 原文地址:https://blog.csdn.net/weixin_49026134/article/details/127717511