首页 > 解决方案 > 解析 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响应中给出的激活码。

标签: pythonpython-3.x

解决方案


使用来自 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]表示列表索引


推荐阅读