python3-----json字段

原创
小哥 3年前 (2022-11-16) 阅读数 8 #大杂烩

json函数

使用json函数,您首先需要导入json模块,import json

JSON 指定的字符集为UTF-8,必须使用字符串。""双引号,Object密钥还必须使用双引号,而不是单引号;

JSON在数组或对象的格式中,不同的元素用逗号分隔,不能在最后一个元素后添加逗号。

python数据类型与json数据类型的映射关系

python

python

dict

object

list, tuple

array

str, unicode

string

int, long, float

number

True

true

False

false

None

null

json转换为python

Python中的list和tuple被改造json并且在解码之后,json的数组最终被转换Python的list的,是否最初list还是tuple。

json中常用的方法

方法

描述

json.dumps()

将 Python 对象已编码 JSON 字符串

json.loads()

编码的 JSON 字符串已解码 Python 对象

json.dump()

将Python内置类型已序列化。json在对象后写入文件

json.load()

读取文件json表单的字符串元素已转换。Python类型

JSON可以表示四种主要数据类型

  1. 字符串 string
  2. 数字 number
  3. 布尔类 boolean
  4. 空值 null

和双结数据结构

  1. 对象 object
  2. 数组 array

    import json

    json.dumps({1:a,2:b})#python的字典已转换json的对象 {"1": "a", "2": "b"}#1和2它们都用双引号括起来,因为json的名称

    json.dumps([1,2,3])#python的列表已转换json的数组 [1, 2, 3] json.dumps((1,2,3,a))#python的发起人json的数组 [1, 2, 3, "a"]#请注意,此时将显示方括号。

    json.dumps(abdcs)#python的字符串已转换。json的字符串 "abdcs" json.dumps(ua)#python的unicode字符串已转换json的字符串 "a"

    json.dumps(13)#python已转换的整数。json的数字 13 json.dumps(3.1415)#python浮点数已转换json的数字 3.1415

    json.dumps(True)#python的True转换为json的数组true true

    json.dumps(False)#python的False转换为json的数组false false

    json.dumps(None)#python的None转换为json的null null

    json本质上是字符串

    type(json.dumps([1,2,3,4]))

    import json data=[1,2,3,4] data_json=(1,2,3,4) json.dumps(data) [1, 2, 3, 4] json.dumps(data_json) [1, 2, 3, 4] a=json.dumps(data) b=json.dumps(data_json) json.loads(a) [1, 2, 3, 4] json.loads(b) [1, 2, 3, 4] #元组和列表从数组中解析出来。

    coding=utf-8

    coding=utf-8

    import json a = [{1:12, a:12.3}, [1,2,3], (1,2), asd,13, 3.3, True, False, None] b=json.dumps(a) c=json.loads(b) print(u"编码前 ", a) print(u"编码后 ", b) print(u"解码后 ", c) for i in range(len(c)): print(type(c[i]),end=)

运行后:

编码前
 [{1: 12, a: 12.3}, [1, 2, 3], (1, 2), asd, 13, 3.3, True, False, None]
编码后
 [{"1": 12, "a": 12.3}, [1, 2, 3], [1, 2], "asd", 13, 3.3, true, false, null]
解码后
 [{1: 12, a: 12.3}, [1, 2, 3], [1, 2], asd, 13, 3.3, True, False, None]#解码后,字典中的键1变为引号,元组变为列表


import json
data = {
    nanbei:haha,
    a:[1,2,3,4],
    b:(1,2,3)
}
with open(json_test.txt,w+) as f:
    json.dump(data,f)#在当前文件夹中创建一个。json_test.txt,将json.dump(data)写入f
with open(json_test.txt,r+) as f:
    print(json.load(f))
#运行之后{nanbei: haha, a: [1, 2, 3, 4], b: [1, 2, 3]}    

对于JSON中数字number数据类型

  • JSON中的实数real number类型的精度不能超过Python中的float类型的精度范围, 否则,将失去精度。. 如下例:

    json.loads(3.141592653589793238462643383279) 3.141592653589793

  • JSON本标准不包括非数字NaN, 正无穷Infinity和负无穷-Infinity
    但是json.loads该方法默认为JSON在字符串中 NaN, Infinity, -Infinity 转化为Python中的 float(‘nan’), float(‘inf’)和float(’-inf’). 注意, 这里JSON中的NaN, Infinity, -Infinity大小写必须正确,拼写必须完整.

    json.loads({"inf": Infinity, "nan": NaN, "ninf": -Infinity}) {inf: inf, nan: nan, ninf: -inf}

bytes和bytearray数据

>>> json.loads({"a": 123}.encode(UTF-8))
{a: 123}
>>> json.loads(bytearray({"a": 123}, UTF-8))
{a: 123}

由于Python 3中str始终使用类型UTF-8编码, 所以s参数为str类型时, json.loads方法将自动使用。UTF-8编码. 并且, str不能以BOM字节开头.
当s参数为bytes或者bytearray时, json.loads方法自动确定UTF-8, UTF-16还是UTF-32编码. 默认情况下也会遵循它。UTF-8编码str用于后续处理的对象.

json.dumps()功能参数的使用

help(‘json.dumps’)

son.dumps = dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

help(‘json.dump’)

json.dump = dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

将“obj“已序列化JSON格式流“fp”(a .write() -支持类似文件的对象)。

函数作用: 将Python的对象JSON对象

  • skipkeys: 如果为True如果是,它只能是字典对象,否则它将是TypeError错误, 默认False,shipkeys可以跳过那些非string对象的key加工,不是加工。
  • ensure_ascii: 确定是否是ASCII编码,默认为True,表示用途ascii编码。如果已设置False,就会以Unicode编码。由于解码json返回字符串。Unicode字符串,所以您可以直接操作。Unicode字符,然后直接编码Unicode字符串,更简单
  • check_circular: 循环类型检查,如果。True的话
  • allow_nan: 确定是否是允许的值
  • indent: 它将以美观的方式打印、呈现和缩进,indent的值表示缩进的位数。
  • separators: 对象分隔符,删除逗号“,“和冒号”:“后面的空格。separators=(’,’,’:’)
  • encoding: 编码方式,默认为utf-8
  • sort_keys: 如果是字典对象,请选择True表示升序的单词将跟随键ASCII要排序的代码,是否按字典排序(a到z)输出,默认编码。json在格式化字符串之后,它是紧凑的输出,并且没有顺序,这不利于可读。

json.loads()

将json字符串python对象

>>> json.loads({"a":"b"})#在外部使用单引号
{a: b}
>>> json.loads({"2":1})
{2: 1}
>>> a=json.loads({"1":{"a":"b"}})
>>> a
{1: {a: b}}
版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除