JSON与JsonPATH

JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。

JSON和XML的比较可谓不相上下。

JSON的结构

JSON有2种结构:对象和数组
对象:
     对象:对象在js中表示为{ }括起来的内容,数据结构为 { key:value, key:value, ... }的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是数字、字符串、数组、对象这几种。

数组:
    数组:数组在js中是中括号[ ]括起来的内容,数据结构为 ["Python", "javascript", "C++", ...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

JSON的方法

load打开文件
loads字符串
dump
dumps
string串
load传入文件,返回值为json格式
loads传入字符串,返回值是json格式


数据源:
{ "store": {
    "book": [
      { "category": "reference",
        "author": "李白",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "杜甫",
        "title": "Sword of Honour",
        "price": 12.99
      },
      { "category": "fiction",
        "author": "白居易",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      { "category": "fiction",
        "author": "苏轼",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

案例:
import json

#打开一个文件,进行读取,将文件中的数据转换成json格式
books = json.load(open('./books.txt', mode='r', encoding='utf-8'))

# print(books)
# print(type(books))  #<class 'dict'>

########################################################
with open('./books.txt', mode='r', encoding='utf-8') as fp:
    books1 = fp.read()

books2 = json.loads(books1,encoding='utf-8')
print(books1)
#<class 'str'>,获取数据不方便,批量获取得使用正则
print(type(books1))
print(books2)
#<class 'dict'>,获取数据方便,如下尝试
print(type(books2))

#获取李白数据
bookinfo = books2['store']['book']
# print('李白数据:',bookinfo )

for book in bookinfo:
    print(book['author'],book['title'],book['price'])
########################################################
#传入dict对象,写入json文件中,数据类型为json
#注意:原数据中有中文的时候,默认是用asciic编码的,我们需要用ensure_ascii=False,这样编码就变成utf-8了
json.dump(books2,open('./books.json',mode='w',encoding='utf-8'),ensure_ascii=False)

#传入str对象,写入json文件中数据类型还是str
json.dump(books1,open('./books1.json',mode='w',encoding='utf-8'))

########################################################

#dumps方法:将对象转换成字符串
books3 = json.dumps(books2,ensure_ascii=False)

print(books3)
#<class 'str'>
print(type(books3))

总结load、loads、dump、dumps

loads 传入对象(str),出来是json
dumps 传入对象(json),出来是str
以上俩个常用

load     传入一个文件,返回是json(把文件中的数据转换成json)
dump  传入一个对象(json),一个不存在的json文件,把对象写入json文件中,格式是json
           传入一个对象(str), 一个不存在的json文件,把对象写入json文件中,  格式是str

JsonPath(解析方式)

JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。

JsonPath 对于 JSON 来说,相当于 XPATH 对于 XML

简单版:
 JsonPath解析JSON 格式
 XPATH 解析 HTML/XML格式
 Beautiful Soup  解析 HTML/XML格式

JsonPath与XPath语法对比

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值