从python中的json结构意外提取值

时间:2019-11-22 14:18:09

标签: python json

我尝试使用python提取值,但是我发现了一个奇怪的结果。 以下是我的json变量的一部分

"weatherElement": [
 {
  "elementName": "ELEV",
  "elementValue": {
   "value": "20.0"
  }
 },
 {
  "elementName": "TEMP",
  "elementValue": {
   "value": "25.0"
  }
 },
 {
  "elementName": "D_TNT",
  "elementValue": {
   "value": "2019-11-22T02:10:00+08:00"
  }
 }
],

下面的代码对于获取温度25.0值是正确的

for unit in data['records']['location']:
    # print(type(unit))  <---- output <dict>
    if unit['stationId'] == 'C0V490':
        for wea_unit in unit['weatherElement']: # unit['weatherElement'] is list
            if wea_unit['elementName'] == 'TEMP':
                print(type(wea_unit['elementValue'])) # is str
                return wea_unit['elementValue']

我的问题是为什么type(wea_unit['elementValue'])str

我认为应该为dict,并且我应该使用wea_unit['elementValue']['value']来获得“ 25.0”,但这是错误的。有谁知道我犯了什么错误?谢谢!

编辑:

以下是可以直接运行的示例代码

import json
def parse_json_to_dataframe(data):
    for unit in data['records']['location']:
        # print(type(unit))
        if unit['stationId'] == 'C0A560':
            for wea_unit in unit['weatherElement']: # unit['weatherElement'] is list
                if wea_unit['elementName'] == 'TEMP':
                    print(type(wea_unit['elementValue']))
                    return wea_unit['elementValue']
v = {"success":"true",
"result": {"resource_id": "O-A0001-001", 
"fields": [{"id": "lat", "type": "Double"},
{"id": "lon", "type": "Double"}, 
{"id": "locationName", "type": "String"}, 
{"id": "stationId", "type": "String"}, 
{"id": "description", "type": "String"}, 
{"id": "elementName", "type": "String"}, 
{"id": "elementValue", "type": "Double"}, 
{"id": "parameterName", "type": "String"}, 
{"id": "parameterValue", "type": "String"}]}, # result end
"records": {"location": [{"lat": "24.778333", 
"lon": "121.494583",
"locationName": "福山", 
"stationId": "C0A560", 
"time": {"obsTime": "2019-11-22 22:00:00"}, 
"weatherElement": [
{"elementName": "ELEV", "elementValue": "405.0"}, 
{"elementName": "WDIR", "elementValue": "0"}, 
{"elementName": "WDSD", "elementValue": "0.0"}, 
{"elementName": "TEMP", "elementValue": "19.6"}], 
"parameter": [
{"parameterName": "CITY_SN", "parameterValue": "06"}, 
{"parameterName": "TOWN_SN", "parameterValue": "061"}]}]}}
temp = parse_json_to_dataframe(v)
print(temp)

0 个答案:

没有答案
相关问题