python - 解析 JSON 答案
问题描述
我有一个响应,我需要一个参数的值,但我不知道如何解析它。
这是回应。我只需要一个提示来了解如何从该响应中提取数据并将其保存到一个变量中。
然后下一步就是展示它,证明它给了我激活码。
{"status":"created","statusCode":"0001","message":{"type":"success","text":"\xd8\xab\xd8\xa8\xd8\xaa\xe2\x80\x8c\xd9\x86\xd8\xa7\xd9\x85 \xd9\x85\xd9\x88\xd9\x81\xd9\x82\xdb\x8c\xd8\xaa \xd8\xa2\xd9\x85\xdb\x8c\xd8\xb2 \xd8\xa8\xd9\x88\xd8\xaf"},"error":[],"data":{"user":{"uuid":"f0dd5bee-2228-42a2-a832-ca577002496d","username":"droppp459","phoneNumber":"09443757689","activationCode":"73821"}}}'
这是我的代码:
import requests
import json
import jsonpath
# Api
url = "http://dropp.dlinkddns.com:5000/api/users/register/complete"
def test_new_user():
# ReadFile
file = open("/Users/amirmarezloo/Downloads/Js.json")
json_input=file.read()
request_json=json.loads(json_input)
#Post
response=requests.post(url,request_json)
#Response
assert response.status_code==201
#Header
print(response.headers.get("Content-Type"))
#Parse
response_json=json.loads(response.text)
#Pick
Active=jsonpath.jsonpath(response_json,'activationCode')
print(response.content)
在这种情况下,我想在屏幕上打印73821
响应中给出的激活码。
解决方案
使用来自 jsonpath_ng 的解析( pip install jsonpath-ng )
from jsonpath_ng import parse
jsonpathExp = parse("$..[*].activationCode")
match = jsonpathExp.find(response_json)
for item in match:
print(item.value,"\n")
解析上下文:
$表示根对象
。表示下一级
*表示任意字段
[n]表示列表索引
推荐阅读
- c++ - 在析构函数 C++ 中删除指针
- c# - 卷积算法逻辑
- css - 是否可以在 WKWebview 中更新 CSS?
- python - 使用sklearn在python中的时空克里金?
- c# - vs buildtools 容器 'dotnet test' 无法找到 Dotnet Core 测试项目的测试
- symfony - Symfony4 DateTimeType 显示无效日期
- amazon-s3 - 在 EC2 中运行时,Flink 未从 S3 读取文件
- c# - 确保在 UI 线程上创建新表单
- video - 什么是 I 帧,它们会影响视频大小吗?
- angular - TypeError: changes.payload.docChanges is not a function in Angular 6 using AngularFire2 v5-rc9