如何反序列化指定JSON并提取AirportCode、Latitude、Longitude字段?
解析JSON提取指定字段的方法
嘿,作为反序列化领域的新手,完全不用慌!咱们先拆解一下你提供的JSON结构,然后一步步提取你需要的AirportCode、Latitude和Longitude字段。
首先,先理清楚这个JSON的层级结构:
- 最外层是
AirportResource对象 - 里面嵌套了
Airports对象 Airports里的Airport是一个数组,每个元素就是一个机场的详细数据- 每个机场对象里:
- 直接有
AirportCode字段 Latitude和Longitude藏在Position -> Coordinate下面
- 直接有
用Python实现提取的示例代码
Python的json模块就能轻松搞定这个任务,代码非常直观,适合新手理解:
import json # 补全格式合法后的JSON数据 json_data = ''' { "AirportResource": { "Airports": { "Airport": [ { "AirportCode": "AAL", "Position": { "Coordinate": { "Latitude": 57.09305556, "Longitude": 9.85 } }, "CityCode": "AAL", "CountryCode": "DK", "LocationType": "Airport", "Names": { "Name": [ {"@LanguageCode": "xx", "$": "Aalborg"}, {"@LanguageCode": "de", "$": "Aalborg"}, {"@LanguageCode": "ru", "$": "Ольборг"}, {"@LanguageCode": "pt", "$": "Aalborg"}, {"@LanguageCode": "jp", "$": "オールボア"}, {"@LanguageCode": "kr", "$": "올보르그"}, {"@LanguageCode": "en", "$": "Aalborg"}, {"@LanguageCode": "it", "$": "Aalborg"} ] } }, { "AirportCode": "CPH", "Position": { "Coordinate": { "Latitude": 55.61805556, "Longitude": 12.65611111 } } } ] } } } ''' # 加载JSON数据 data = json.loads(json_data) # 提取机场数组 airports = data['AirportResource']['Airports']['Airport'] # 遍历每个机场,提取目标字段 extracted_data = [] for airport in airports: extracted = { 'AirportCode': airport['AirportCode'], 'Latitude': airport['Position']['Coordinate']['Latitude'], 'Longitude': airport['Position']['Coordinate']['Longitude'] } extracted_data.append(extracted) # 打印整理后的结果 for item in extracted_data: print(item)
代码运行结果
运行上面的代码后,你会得到干净的目标字段集合:
{'AirportCode': 'AAL', 'Latitude': 57.09305556, 'Longitude': 9.85} {'AirportCode': 'CPH', 'Latitude': 55.61805556, 'Longitude': 12.65611111}
新手避坑提醒
- 保证JSON格式合法:你提供的原始JSON末尾有省略号和未闭合的括号,实际解析前一定要补全或确保数据格式正确,否则会直接报错。
- 处理可能缺失的字段:如果部分机场数据存在层级缺失(比如没有
Position字段),可以用get方法做容错处理,避免代码崩溃:
latitude = airport.get('Position', {}).get('Coordinate', {}).get('Latitude', None)
这样即使某个层级不存在,代码也会返回None而不是抛出异常。
如果你用的是其他编程语言(比如Java、JavaScript),也可以告诉我,我再给你对应的示例哦~
内容的提问来源于stack exchange,提问作者user7615935
相关产品推荐
相关产品推荐

