python-json-load-loads-dump-dumps-requests-json

这里
格式化json

json load/loads是将json格式的数据转成python对象,
load是对文件进行操作的,因此load的主要参数是打开的文件,调用格式通常为 load(f)
loads是对字符串进行操作的,因此loads的主要参数是字符串,调用格式通常为 load(str),方便记忆,可以把loads的s理解为str

json.load(): 
# coding=utf-8
import json

file = "text1.json"
with open(file, encoding="utf-8") as f:  # 注意编码要和文件编码一致,不加encoding参数默认使用gbk编码读取文件
    dic = json.load(f)

print(dic)
print(type(dic))
_______________________________________
{'姓名': '张三', '年龄': 18}
<class 'dict'>


json.loads():
with open(file, encoding="utf-8") as f:
    for line in f:
        dic2 = json.loads(line.strip())  # 此时的line是字符串格式
print(dic2)
print(type(dic2))
_______________________________________
{'姓名': '张三', '年龄': 18}
<class 'dict'>



json.loads的方式是先读取每行的字典格式的字符串,再解析成字典。这种方法也可以读取文件中有多行dict的形式,此时json.load就不行。


理解了load/loads的用法,dump和dumps的用法就也很简单了,将一个python对象进行json格式的编码,和load、loads是对应的。
dump是将python对象转成json格式存入文件,主要格式是dump(obj, f)
dumps是将python对象转成json格式的字符串,主要格式是dumps(obj)


json.dump():
file = "save1.json"
dic = {"姓名": "张三", "年龄": 18}
with open(file, "w") as w:
    json.dump(dic, w, ensure_ascii=False)


json.dumps()
file = "save2.json"
dic = {"姓名": "张三", "年龄": 18}
with open(file, "w") as w:
    w.write(json.dumps(dic, ensure_ascii=False))


json.dumps是将obj转成str,因此有返回值str,再用write()函数把字符串写入文件。
注意在dump/dumps时一般都需要加ensure_ascii=False这个参数,否则存储的文件可能是乱码,
ensure_ascii: 默认值为True,能将所有传入的非ASCII字符转义输出。如果ensure_ascii为False,则这些字符将按原样输出。


requests的json()方法,看这里
# import requests module
import requests
 
# Making a get request
response = requests.get('https://api.github.com')
 
# print response
print(response)
print(response.text)
# print json content
print(response.json())

执行后的结果如下:
<Response [200]>

{"current_user_url":"https://api.github.com/user","current_user_authorizations_html_url":"https://github.com/settings/connections/applications{/client_id}","authorizations_url":"https://api.github.com/authorizations","code_search_url":"https://api.github.com/search/code?q={query}{&page,per_page,sort,order}","commit_search_url":"https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}","emails_url":"https://api.github.com/user/emails","emojis_url":"https://api.github.com/emojis","events_url":"https://api.github.com/events","feeds_url":"https://api.github.com/feeds","followers_url":"https://api.github.com/user/followers","following_url":"https://api.github.com/user/following{/target}","gists_url":"https://api.github.com/gists{/gist_id}","hub_url":"https://api.github.com/hub","issue_search_url":"https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}","issues_url":"https://api.github.com/issues","keys_url":"https://api.github.com/user/keys","label_search_url":"https://api.github.com/search/labels?q={query}&repository_id={repository_id}{&page,per_page}","notifications_url":"https://api.github.com/notifications","organization_url":"https://api.github.com/orgs/{org}","organization_repositories_url":"https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}","organization_teams_url":"https://api.github.com/orgs/{org}/teams","public_gists_url":"https://api.github.com/gists/public","rate_limit_url":"https://api.github.com/rate_limit","repository_url":"https://api.github.com/repos/{owner}/{repo}","repository_search_url":"https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}","current_user_repositories_url":"https://api.github.com/user/repos{?type,page,per_page,sort}","starred_url":"https://api.github.com/user/starred{/owner}{/repo}","starred_gists_url":"https://api.github.com/gists/starred","topic_search_url":"https://api.github.com/search/topics?q={query}{&page,per_page}","user_url":"https://api.github.com/users/{user}","user_organizations_url":"https://api.github.com/user/orgs","user_repositories_url":"https://api.github.com/users/{user}/repos{?type,page,per_page,sort}","user_search_url":"https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"}

{
    "current_user_url": "https://api.github.com/user",
    "current_user_authorizations_html_url": "https://github.com/settings/connections/applications{/client_id}",
    "authorizations_url": "https://api.github.com/authorizations",
    "code_search_url": "https://api.github.com/search/code?q={query}{&page,per_page,sort,order}",
    "commit_search_url": "https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}",
    "emails_url": "https://api.github.com/user/emails",
    "emojis_url": "https://api.github.com/emojis",
    "events_url": "https://api.github.com/events",
    "feeds_url": "https://api.github.com/feeds",
    "followers_url": "https://api.github.com/user/followers",
    "following_url": "https://api.github.com/user/following{/target}",
    "gists_url": "https://api.github.com/gists{/gist_id}",
    "hub_url": "https://api.github.com/hub",
    "issue_search_url": "https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}",
    "issues_url": "https://api.github.com/issues",
    "keys_url": "https://api.github.com/user/keys",
    "label_search_url": "https://api.github.com/search/labels?q={query}&repository_id={repository_id}{&page,per_page}",
    "notifications_url": "https://api.github.com/notifications",
    "organization_url": "https://api.github.com/orgs/{org}",
    "organization_repositories_url": "https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}",
    "organization_teams_url": "https://api.github.com/orgs/{org}/teams",
    "public_gists_url": "https://api.github.com/gists/public",
    "rate_limit_url": "https://api.github.com/rate_limit",
    "repository_url": "https://api.github.com/repos/{owner}/{repo}",
    "repository_search_url": "https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}",
    "current_user_repositories_url": "https://api.github.com/user/repos{?type,page,per_page,sort}",
    "starred_url": "https://api.github.com/user/starred{/owner}{/repo}",
    "starred_gists_url": "https://api.github.com/gists/starred",
    "topic_search_url": "https://api.github.com/search/topics?q={query}{&page,per_page}",
    "user_url": "https://api.github.com/users/{user}",
    "user_organizations_url": "https://api.github.com/user/orgs",
    "user_repositories_url": "https://api.github.com/users/{user}/repos{?type,page,per_page,sort}",
    "user_search_url": "https://api.github.com/search/users?q={query}{&page,per_page,sort,order}"
}