【问题标题】:How to get a json value inside of another json in python?如何在python中的另一个json中获取json值?
【发布时间】:2020-12-22 16:13:09
【问题描述】:

我正在尝试从此 json 中获取数据中的 "id""phone" 值:

  "status": "success",
  "data": {
    "id": "MertD43fdfdDdsjk",
    "countrycode": "GB",
    "country": "United Kingdom",
    "createdAt": 15534534000,
    "validUntil": 15534534000,
    "service": "gmail",
    "phone": "446576879809",
    "price": 0.21
  }
}

我当前的代码是

json_data = json.loads(response.text)
    #print(json_data)
    values = json_data.items()
    #print(values)
    recieved = False


    for key, value in values:
        print(key, value)

        if key == "id":
            numid = value
            print(numid)
        elif key == "phone":
            phone = value
            print("Recieved the Phone Number - ",phone)
            recieved = True
        elif value == "Mobile number isn't received. Please try again":
            if recieved == False:
                getPhoneNumber() 

我知道我只访问statusdata 项目,而不是data 中的内容。 目前,我收到来自 API 请求的 JSON,因此值总是不同的。

【问题讨论】:

标签: python json loops


【解决方案1】:

如果这是来自 API 的纯 JSON,为什么不这样做?

d = {
    "status": "success",
    "data": {
        "id": "MertD43fdfdDdsjk",
        "countrycode": "GB",
        "country": "United Kingdom",
        "createdAt": 15534534000,
        "validUntil": 15534534000,
        "service": "gmail",
        "phone": "446576879809",
        "price": 0.21
    }
}

print(d["data"]["id"], d["data"]["phone"])

输出:

MertD43fdfdDdsjk 446576879809

【讨论】:

    【解决方案2】:

    不需要循环,可以通过key访问数据;

    import json
    
    json_string = '{"status": "success", "data": {"id": "MertD43fdfdDdsjk", "countrycode": "GB", "country": "United Kingdom", "createdAt": 15534534000, "validUntil": 15534534000, "service": "gmail", "phone": "446576879809", "price": 0.21 } }'
    json_data = json.loads(json_string)
    data_dict = json_data['data']
    
    dataid = data_dict['id']
    phone = data_dict['phone']
    
    print(dataid)
    print(phone)
    
    

    MertD43fdfdDdsjk

    446576879809

    Getting values from JSON using Python

    【讨论】:

    • 不要使用id作为变量名,因为这会影响内置的id
    • 谢谢@baduker!我改进了我的答案!
    【解决方案3】:

    values是一个dict,可以直接访问字段

    numid = values['data']['id']
    phone = values['data']['phone']
    

    【讨论】:

      【解决方案4】:
      1. 使用 requests 模块,提供更多提取文本的功能 # pip install requests

      2. 收到响应后在此模块中尝试 response.json

      3. 例如:如果接收到的数据是

         d = {
             "status": "success",
             "data": {
                 "id": "MertD43fdfdDdsjk",
                 "countrycode": "GB",
                 "country": "United Kingdom",
                 "createdAt": 15534534000,
                 "validUntil": 15534534000,
                 "service": "gmail",
                 "phone": "446576879809",
                 "price": 0.21
             }
         }
        

        然后访问id和电话号码:=>

         data['data']['id'] # or 'phone'
        

      【讨论】:

        猜你喜欢
        • 2020-06-12
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 2019-05-04
        • 1970-01-01
        • 2015-03-31
        • 2021-01-23
        • 2022-01-03
        相关资源
        最近更新 更多