Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的JSON导航(PowerBIAPI)_Python_Json_Python 3.x_Api_Powerbi - Fatal编程技术网

Python中的JSON导航(PowerBIAPI)

Python中的JSON导航(PowerBIAPI),python,json,python-3.x,api,powerbi,Python,Json,Python 3.x,Api,Powerbi,我正在尝试学习python,并希望使用它与PowerBI API交互,特别是检查数据集的当前参数: 我已经创建了一个函数,它成功地返回了我需要的数据,但我想对其进行过滤,这有点超出了我的理解 def check_dataset_parameter(access_token, parameter_name = "FarmId"): url = "https://api.powerbi.com/v1.0/myorg/groups/" + group_id + "/datasets/

我正在尝试学习python,并希望使用它与PowerBI API交互,特别是检查数据集的当前参数:

我已经创建了一个函数,它成功地返回了我需要的数据,但我想对其进行过滤,这有点超出了我的理解

    def check_dataset_parameter(access_token, parameter_name = "FarmId"):
    url = "https://api.powerbi.com/v1.0/myorg/groups/" + group_id + "/datasets/" + dataset_id + "/parameters"
    headers = {
        'content-type': "application/json",
        'authorization': "Bearer " + access_token,
    }
    response = requests.request("GET", url, data=None, headers=headers)
    response_full_json = response.json()
    response_value_str = str(response.json()['value'])
    parameter_list_clean = response_value_str.replace("'", '"').replace('[', '').replace(']', '').replace(' ', '')
    actual_value_i_want = response.json()['value'][0]['currentValue']
    current_value = actual_value_i_want ###Except I want the current value of the parameter specified in the function call
    return current_value
此代码返回“179”,因为它是位置0处的当前值。我想要的是返回函数调用中指定的参数(FarmId或OrgId)的当前值

参数_list_clean的输出为:

{"name":"FarmId","type":"Text","isRequired":True,"currentValue":"179"},{"name":"OrgId","type":"Number","isRequired":True,"currentValue":"-1"}
我这样做是为了尝试将字符串转换为dict,但失败了,我还尝试了各种形式的json.load和json.dump

响应_full_json的原始输出如下所示:

{'@odata.context': 'http://wabi-australia-southeast-redirect.analysis.windows.net/v1.0/myorg/groups/<my_group>/$metadata#parameters', 'value': [{'name': 'FarmId', 'type': 'Text', 'isRequired': True, 'currentValue': '179'}, {'name': 'OrgId', 'type': 'Number', 'isRequired': True, 'currentValue': '-1'}]}
{'@odata.context':'http://wabi-australia-southeast-redirect.analysis.windows.net/v1.0/myorg/groups//$metadata#parameters,'value':[{'name':'FarmId','type':'Text','isRequired':True,'currentValue':'179'},{'name':'OrgId','type':'Number','isRequired':True,'currentValue':'-1'}

我找到了答案。问题是response.json()['value']返回的数据实际上是一个包含两个(或更多)字典的列表。我使用next()成功地隔离了所需的单个词典:

我发现这个问题非常有用:
我找到了答案。问题是response.json()['value']返回的数据实际上是一个包含两个(或更多)字典的列表。我使用next()成功地隔离了所需的单个词典:

我发现这个问题非常有用:

    def check_dataset_parameter(access_token, parameter_name="FarmId"):
    url = "https://api.powerbi.com/v1.0/myorg/groups/" + group_id + "/datasets/" + dataset_id + "/parameters"
    headers = {
        'content-type': "application/json",
        'authorization': "Bearer " + access_token,
    }
    response = requests.request("GET", url, data=None, headers=headers)
    response_value = response.json()['value']
    parameter_dict = next((item for item in response_value if item["name"] == parameter_name), None)
    current_value = parameter_dict['currentValue']
    return current_value