zoukankan      html  css  js  c++  java
  • python json操作

    json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

    json是我们在制作爬虫时非常常见的网络对象,本文就列举python对于json的基本操作。

    json函数

    使用json函数首先要导入 json 库   即 import json

    主要使用以下两个函数:

    • json.dumps  将 Python 对象编码成 JSON 字符串
    • json.loads    将已编码的 JSON 字符串解码为 Python 对象

    注意:对于json文件的操作请使用 json.load与json.dump 


     

    json.dumps

    json.dumps 用于将 Python 对象编码成 JSON 字符串。

    语法:

    json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", 
    default=None, sort_keys=False, **kw)

    实例:

    import json
    data = [{'A':1,'B':2,'C':3}]
    datajson=json.dumps(data)
    print(datajson)

    输出:

    [{"A": 1, "B": 2, "C": 3}]

    常用参数详解

    1)skipkeys参数,在编码成json过程中,dict对象的key只可以是string对象,如果是其他类型,那么在编码过程中就会抛出ValueError的异常。skipkeys可以跳过那些非string对象的处理,只处理正确的编码。

    2)输出真正的中文需要指定ensure_ascii=False,默认配置使用的ascii编码,所以默认只会输出ASCII字符。

    3)indent参数根据数据格式缩进显示,读起来更加清晰, indent的值,代表缩进空格式

    import json
    data = [{'A':1,'B':2,'C':3}]
    datajson=json.dumps(data)
    print(datajson)
    datajson2=json.dumps(data,indent=4)
    print(datajson2)

    输出:

    [{"A": 1, "B": 2, "C": 3}]
    [
        {
            "A": 1,
            "B": 2,
            "C": 3
        }
    ]

    4)separators参数的作用是去掉‘,’ ‘:’后面的空格,在传输数据的过程中,越精简越好,冗余的东西全部去掉。

    import json
    data = [{'A':1,'B':2,'C':3}]
    datajson=json.dumps(data)
    print(datajson)
    datajson2=json.dumps(data,separators=(',',':'))
    print(datajson2)

    输出:

    [{"A": 1, "B": 2, "C": 3}]
    [{"A":1,"B":2,"C":3}]

    5)sort_keys是告诉编码器按照字典key排序(a到z)输出。

    import json
    data = [{'A':1,'D':2,'C':3}]
    datajson=json.dumps(data)
    print(datajson)
    datajson2=json.dumps(data,sort_keys=True)
    print(datajson2)

    输出:

    [{"A": 1, "D": 2, "C": 3}]
    [{"A": 1, "C": 3, "D": 2}]

    python 原始类型向 json 类型的转化对照表:

    PythonJSON
    dict object
    list, tuple array
    str, unicode string
    int, long, float number
    True true
    False false
    None null

     


    json.loads

    json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。

    import json
    jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'
    print(json.loads(jsonData))

    输出:

    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

    以下代码表示存储json文件以及读取json文件

    import json
    data = [{'A':1,'D':2,'C':3},{'a':1,'b':2,'c':3}]
    with open('test.json','w') as jsfile:
        jsfile.write(json.dumps(data))
    
    with open('test.json','r') as jsfile:
        print(json.loads(jsfile.read()))

    json 类型转换到 python 的类型对照表:

    JSONPython
    object dict
    array list
    string unicode
    number (int) int, long
    number (real) float
    true True
    false False
    null None
  • 相关阅读:
    第一次作业
    第四次作业
    第五次作业《构建之法》心得体会
    第三次作业
    第二次作业
    第一次作业
    个人简介
    读《构建之法》有感
    第四次博客园作业(2)
    第四次博客园作业(1)
  • 原文地址:https://www.cnblogs.com/CYHISTW/p/11532072.html
Copyright © 2011-2022 走看看