python的json应用的简单介绍

python的json应用的简单介绍import json,time  

本文目录一览:

如何用python处理json文件

import json,time  

  

infos = {“_id”:”description”,”name”:”python”,”filename”:”中文”,”os”:[“abcd”,”hello”,”www”]}  

infos[“time”] = time.time()#动态修改json文件内容  

#生成json文件  

def json_file(infos):  

    with open(“./static/desc.desc”,”w”) as jsonf:  

        jsonf.write(json.dumps(infos)) 

json_file(infos)  

  

  

  

#读取json文件的内容  

file_info = json.load(file(“./static/desc.desc”))  

print file_info,type(file_info)  

filename = file_info[“filename”]  

print filename  

  

infos = json.dumps(file_info,sort_keys=True,indent=4)  

print infos,type(infos)

python使用json模块来处理json数据

python的json应用的简单介绍

【Python】浅谈python中的json

一 前言  

   最近一直在做开发相关的工作–基于Django的web 平台,其中需要从model层传输数据到view 层做数据展示或者做业务逻辑处理。我们采用通用的Json格式–Json(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和程序解析。

二 认识Json

   2.1 Json 结构

   常见的Json格式为 “名称/值”对的集合,其中 值可以是对象,列表,字典,字符串等等。比如

backup_data = {“back_to_host”: “dbbk0”,

“ip_address”: “10.10.20.3”,

“host_name”: “rac4”,

“port”: 3306}

  2.2 使用Json

  Python的Json模块序列化与反序列化的过程分别是 编码和解码。这两个过程涉及到两组不同的函数

  编码 把一个Python对象编码转换成Json字符串,json.dumps(data)/json.dump(data,file_handler)

  解码 把Json格式字符串解码转换成Python对象,json.loads(data)/json.load(file_handler)

  在python中要使用Json模块做相关操作,必须先导入:

import Json

  2.3 主要函数

  编码函数主要有 json.dumps(data)/json.dump(data,file_handler)

   json.dumps()的参数是将python对象转换为字符串,如使用json.dumps序列化的对象json_dumps=json.dumps({‘a’:1, ‘b’:2}) ,json_dumps='{“b”: 2, “a”: 1}’

   json.dump 是将内置类型序列化为json对象后写入文件。

 解码函数主要由json.loads(data)/json.load(file_handler)  

    json.loads的参数是内存对象,把Json格式字符串解码转换成Python对象,json_loads=json.loads(d_json)  #{ b”: 2, “a”: 1},使用load重新反序列化为dict

    json.load()的参数针对文件句柄,比如本地有一个文件/tmp/test.json  json_load=json.load(open(‘/tmp/test.json’))

具体案例参考如下:

In [3]: data={“back_to_host”: “rac1”,

…: “ip_address”: “10.215.20.3”,

…: “host_name”: “rac3”,

…: “port”: 3306}

In [7]: json_str=json.dumps(data)

In [8]: print json_str

{“ip_address”: “10.215.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

In [9]: json_loads=json.load(json_str)

—————————————————————————

AttributeError Traceback (most recent call last)

ipython-input-9-180506f16431 in module()

—- 1 json_loads=json.load(json_str)

/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.pyc in load(fp, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)

284

285 “”

注意 从上面的报错信息来看 json.loads 传参是字符串类型,并不是文件句柄,没有 read()属性。

In [10]: json_loads=json.loads(json_str)

In [11]: print json_loads

{u’back_to_host’: u’rac1′, u’ip_address’: u’10.215.20.3′, u’host_name’: u’rac3′, u’port’: 3306}

In [12]: type(json_loads)

Out[12]: dict

In [13]: type(json_str)

Out[13]: str

利用dump 将数据写入 dump.json

In [17]: with open(‘/tmp/dump.json’,’w’) as f:

…: json.dump(json_str,f)

…:

yangyiDBA:~ yangyi$ cat /tmp/dump.json

“{\”ip_address\”: \”10.10.20.3\”, \”back_to_host\”: \”rac1\”, \”host_name\”: \”rac3\”, \”port\”: 3306}”

yangyiDBA:~ yangyi$

利用json.load 将dump.sjon的数据读出来并赋值给 data 

In [18]: with open(‘/tmp/dump.json’,’r’) as f:

…: data=json.load(f)

…:

In [19]: print data

{“ip_address”: “10.10.20.3”, “back_to_host”: “rac1”, “host_name”: “rac3”, “port”: 3306}

三 小结

  本文算是一篇学习笔记,主要对比了json.loads/json.load  , json.dumps/ json.dump 的使用差异 ,方便以后更好的使用json 。

以上为本次分享内容,感谢观看。

python中为什么用json有什么作用

今天我也在这个问题上纠结很久。最后才想明白,我来回答下。

网上很多网友总结了json模块的用法,但没说json模块有什么用,干嘛要有这个模块。可能都明白、太简单,觉得没必要说。但作为小白的我不明白,而且在练习使用load()和dump()时遇到错误。

首先纠正,json格式不是字符串。json与python里面的字典是一样的格式。

python的json模块四个方法的作用为:

dumps() # 把数据转成字符串;

loads() # 把字符串符号‘’去掉;

dump(x, f) # 将x的内容直接写入f,不改变格式;

load(x, f) # 读取f保存为x,同样不改变格式。

重点来了,f = open()下的read()的方法,输出是字符串,wirte()方法的输入也必须是字符串。

结论:因为f=open()下的读写方法都必须是字符串,很不方便。而非字符串的数据大多是json格式,所以就有了json模块。方便读写非字符串的数据。

因为这个目的,json模块的loads()和dumps()方法有些鸡肋,还造成困扰,因为明明json不是字符串,干嘛要转成字符串,另外dump()和load()方法表面上和它们不一样。只有明白json模块的目的,才会搞明白。

在python 3.6的说明文档中,把json模块放在了《7.2.文件读写》部分。我也是看到这里才去练习json模块。但出问题,有些糊涂,明白json模块的作用后,才更清楚干嘛把json模块放这里。

小白的浅见,若错误请指教,谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/23301.html

(0)
上一篇 2023-11-19
下一篇 2023-11-20

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注