python- json

本文详细介绍了JSON数据类型的概念,包括其通用性及如何在各种编程语言中进行操作。深入讲解了JSON与字典之间的转换方法,如loads(), load(), dumps() 和 dump() 的使用场景和区别。同时提供了实用的Python代码示例,帮助读者掌握JSON数据的处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概念
  • json是一种通用的数据类型,任何语言都认识
  • 接口返回的数据类型都是json
  • 长得像字典,形式也是k-v { }
  • 其实json是字符串
  • 字符串不能用key、value来取值,要先转成字典才可以
  • 定义json字符串,要使用‘’‘ {}’‘’格式
  • http://www.bejson.com/可以校验json格式对不对
  • json串里面是双引号,字典里面是单引号
  • 格式如下:
    {
            "error_code": 0,#要使用双引号,如果是单引号则运行时会报错,可以上网做在线json格式校验
            "stu_info": [
                    {
                            "id": 309,
                            "name": "小白",
                            "sex": "",
                            "age": 28,
                            "addr": "河南省济源市北海大道32号",
                            "grade": "天蝎座",
                            "phone": "18512572946",
                            "gold": 100
                    },
                    {
                            "id": 310,
                            "name": "小白",
                            "sex": "",
                            "age": 28,
                            "addr": "河南省济源市北海大道32号",
                            "grade": "天蝎座",
                            "phone": "18516572946",
                            "gold": 100
                    }
            ]
    }
二、json操作

1、json转成字典
(1).loads()方法
import json

dic = {"name": "dabai", "age": 18}
print(json.dumps(dic))  # 把字典转成json串
fj = open('a.json', 'w')
print(json.dump(dic, fj))  # 把字典转换成的json串写到一个文件里面
s_json = '{"name":"dabai","age":20,"status":true}'
print(json.loads(s_json))  # 把json串转换成字典
fr = open('b.json', 'r')
print(json.load(fr))  # 从文件中读取json数据,然后转成字典
  • 要先读文件,然后再转换:
    f=open('stus.json',encoding='utf-8')
    content=f.read()#使用loads()方法,需要先读文件
    user_dic=json.loads(content)
    print(user_dic)

    (2).load()方法

    import json
    f=open('stus.json',encoding='utf-8')
    user_dic=json.load(f)
    print(user_dic)

    (3)区别

  • loads()传的是字符串,而load()传的是文件对象
  • 使用loads()时需要先读文件再使用,而load()则不用

    2、字典转成json串:

  • 文件里只能写字符串,但可以把字典转成json串,json串是字符串,可以存到文件里
  • (1).dumps()方法

    stus={'xiaojun':'123456','xiaohei':'7891','abc':'11111'}
    #先把字典转成json
    res2=json.dumps(stus)
    print(res2)#打印字符串
    print(type(res2))#打印res2类型
  • .dumps()方法:把字典转成json串
    with open('stus.txt','w',encoding='utf-8' as f:#打开文件
        f.write(res2)#在文件里写入转成的json串
  • 使用.dumps()方法前,要先打开文件,再写入:
    stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'}
    res2=json.dumps(stus,indent=8,ensure_ascii=False)
    print(res2)
    with open('stus.json','w',encoding='utf-8') as f:#使用.dumps()方法时,要写入
        f.write(res2)

    (2)dump()方法

    stus={'xiaojun':'123456','xiaohei':'7890','lrx':'111111'}
    f=open('stus2.json','w',encoding='utf-8')
    json.dump(stus,f,indent=4,ensure_ascii=False)#自动传入字典,转换成json字符串

    (3)区别

    • .dump()不需要使用.write()方法,只需要写哪个字典、哪个文件即可;而.dumps()需要使用.write()方法写入
    • 如果要把字典写到文件里面的时候,dump()好用;但如果不需要操作文件,或需要把内容存到数据库和Excel,则需要使用dumps()先把字典转成字符串,再写入

    (4)dump\dumps参数

    • .dumps\dump中使用参数indent,为字符串换行+缩进:
      res2=json.dumps(stus.indent=4)
      print(res2)#打印字符串
      #结果为: 
      '''
      {
          "xiaojun": "123456",
          "xiaohei": "7891",
          "lrx": "hailong",
          "tanailing": "111111"
      }
      '''
    • .dumps\dump中使用参数ensure_ascii,为内容输出为中文:
      res2=json.dumps(stus,indent=4,ensure_ascii=False)#为False时内容输出显示正常的中文,而不是转码
      print(res2)

      3、不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的。


      1、pycharm使用小技巧之分屏:

      在python文件上右键——Split Vertically,即可达到分屏效果:

       

      2、pycharm使用小技巧之颜色渲染:

      文件为.json结尾时,输出的内容会有染色渲染:

      with open('stus.json','w',encoding='utf-8' as f:#打开文件

       

       

转载于:https://www.cnblogs.com/brf-test/p/11520368.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值