【Python网络爬虫】150讲轻松搞定Python网络爬虫付费课程笔记 篇十三——数据存储:JSON 字符串格式

   日期:2020-09-24     浏览:132    评论:0    
核心提示:1. JSON 概述JSON(JavaScript Object Notation, JS 对象标记)是一种轻量级的数据交换格式,简洁和清晰的层次结构使得JSON成为理想的数据交换语言。JSON 支持的数据格式:对象(字典):花括号 数组(列表):方括号 字符串类型:必须使用双引号,不能使用的单引号 整形、浮点型、布尔型、null等 多个数据之间用逗号隔开 json 本质上是一个字符串在线json 解析器:http://json.cn/{"Person": [{"usernam

1. JSON 概述

JSON(JavaScript Object Notation, JS 对象标记)是一种轻量级的数据交换格式,简洁和清晰的层次结构使得JSON成为理想的数据交换语言。

JSON 支持的数据格式:

  • 对象(字典):花括号
  • 数组(列表):方括号
  • 字符串类型:必须使用双引号,不能使用的单引号
  • 整形、浮点型、布尔型、null等
  • 多个数据之间用逗号隔开
  • json 本质上是一个字符串

在线json 解析器:http://json.cn/

{"Person": [{"username": "张三", "age":18}]}

json :
{
    "Person":[
        {
            "username":"张三",
            "age":18
        }
    ]
}

 

2. json 常用函数

2.1 python对象转换成json字符串

  • dumps :把python对象转换成json 格式字符串;
  • dump:把python对象转换成json格式字符串,同时还可以接收一个文件指针fp参数,可以写入到文件

这两种方法都有一个参数,ensure_ascii 默认情况下时True,即默认只能存储支持ASCII的字符;如果要存储中文,将ensure_ascii 参数设为False。

在写python对象时不需要格外注意遵循json格式要求,只需正确书写python即可,因为dumps/dump函数会自动将python转换成json格式。

import json

books = [
    {
        "name": "三国演义",
        "price": 18.8
    },
    {
        "name": "水浒传",
        "price": 19.9
    }
]
# dumps
result = json.dumps(books, ensure_ascii=False)
print(result, type(result))

#dump
fp = open('books.json', 'w', encoding='utf-8')
json.dump(books, fp, ensure_ascii=False)
fp.close() 
#open 之后需要手动close文件

2.2 json 字符串转换成python对象

  • loads:将json 字符串转换成python对象
  • load:json 字符串转换成python对象,并且可以直接从文件中获取json字符串
import json

json_str = '[{"name": "三国演义", "price": 18.8}, {"name": "水浒传", "price": 19.9}]'

print(type(json_str))
result = json.loads(json_str)
print(result)
print(type(result))

print('*'*20)
# load
with open('books.json', 'r', encoding='utf-8') as fp:
    result = json.load(fp)
    print(result)
    print(type(result))

使用with open 打开文件不需要手动关闭文件

并且在获取文件内容时,最好指定好解析的编码,否则会容易报错

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服