zoukankan      html  css  js  c++  java
  • python详解json模块

     我们在做工作中经常会使用到json模块,今天就简单介绍下json模块

    什么是json

    JSON ,全称为JavaScript Object Notation, 也就是JavaScript 对象标记,它通过对象和数组的组合米表示数据,构造简洁但是结构化程度非常高,是一种轻量级的数据交换格式。json模块在python中可以作为数据解析json

    对象和数组

    在JavaScript 语言中,一切都是对象。任何支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等,但是对象和数组是比较特殊且常用的两种类型

    对象:它在JavaScript中是使用花括号{ }包裹起来的内容,数据结构为{ keyl : valuel,key2:value2}的键值对结构。在面向对象的语言中,key为对象的属性,value 为对应的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。

    数组:数组在JavaScript中是方括号[]包裹起来的内容,数据结构为[ ”java ” ,” javascript ”,"vb " ]的索引结构。在JavaScript中, 数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引用得多。同样,值的类型可以是任意类型。

    JSON对象格式

    会发现和我们的字典格式是不是特别的一样

    # 格式为{"name":"value"}
    [{"name":"AnJing","age":"26" }]

    JSON简单使用

    loads()方法

     使用方法loads()将 json文字转化成json对象

    复制代码
    # coding:utf-8
    import json
    str = '''
        [{
        "name":"AnJing",
        "age":"26"
    }]
    '''
    data = json.loads(str)
    print(data)
    print(type(data))
    print(data[0]['name'])  # 通过下标进行选择
    print(data[0].get('name'))
    
    代码结果:
    [{'name': 'AnJing', 'age': '26'}]
    <class 'list'>
    AnJing
    AnJing
    复制代码

    注意:在使用loads的时候json字符串必须要用双引号表示,否则会报错

    (json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 3 column 5 (char 12))

    dumps()方法

    使用dumps()方法将json转换成字符串

    复制代码
    # coding:utf-8
    import json
    str = [{
        "name":"AnJing",
        "age":"26"
    }]
    print(type(str))
    data = json.dumps(str)
    print(type(data))
    print(data)
    
    代码结果:
    <class 'list'>
    <class 'str'>
    [{"name": "AnJing", "age": "26"}]
    复制代码

    另外如果想要保存的文字好看点,我们可以增加一个参数indent,代表缩进字符个数,已经可以写入中文的时候不会乱码,加入ensure_ascii=False

    复制代码
    # coding:utf-8
    import json
    str = [{
        "name":"安静",
        "age":"26",
        "性别":"男"
    }]
    # indent 表示缩进
    # ensure_ascii=False 表示写入中文
    with open('123.json','w',encoding='utf-8')as f:
        f.write(json.dumps(str,indent=2,ensure_ascii=False))
    
    
    代码结果:
    [
      {
        "name": "安静",
        "age": "26",
        "性别": "男"
      }
    ]
    复制代码

    load()方法

    将文件内容转换成json数据

    复制代码
    # 导入json模块
    import json
    str = [{
        "name":"AnJing",
        "age":"26"
    }]
    # 通过dumps写入文件中
    with open('123.json','w')as f:
        f.write(json.dumps(str))
    # 通过load将数据转换成json
    data = json.load(open('123.json','r'))
    print(data)
    
    代码结果:
    [{'name': 'AnJing', 'age': '26'}]
    复制代码

    dump()方法

    将json数据写入到文件中

    复制代码
    # coding:utf-8
    import json
    str = [{
        "name":"AnJing",
        "age":"26"
    }]
    # 通过dump写入到json中
    json.dump(str,open('123.json','w'))
    # 通过load查看是否写入
    data = json.load(open('123.json','r'))
    print(data)
    
    
    代码结果:
    [{'name': 'AnJing', 'age': '26'}]
    复制代码

    简单的写了写json模块的使用方法,以及json的简单介绍,欢迎继续补充没有涉及到的知识。

    感觉写的对您有帮助的,点个关注不迷路~~~~

     
    分类: python基础
     
     
    来源:
    测试-安静    https://www.cnblogs.com/qican/
     
     
     
  • 相关阅读:
    微信公众号图片抓取
    ArcGIS Pro SDK开发从别的收集
    ARCGIS Pro试用申请教程以及登录页面脚本错误解决办法
    ArcMap python IndentationError: unexpected indent 莫名的错误解决
    ArcGIS Python更新顺序2种方法
    ArcGIS三维模型
    三维文件格式知多少 | abc、glTF、fbx、obj、dae、stl、3ds
    ArcGIS Pro创建点场景图层包(CreatePointSceneLayerPackage)
    What is the difference between SqlCommand.CommandTimeout and SqlConnection.ConnectionTimeout?
    Reference Microsoft.SqlServer.Smo.dll
  • 原文地址:https://www.cnblogs.com/rxxbb123/p/14234091.html
Copyright © 2011-2022 走看看