如何在Python中获取JSON文件里的RU-RU本地化名称
解决Python中获取JSON里LocalizedNames的RU-RU字段失败问题
可能的失败原因及解决步骤
1. 确认JSON顶层结构与遍历逻辑
你的代码使用for item in data,说明默认JSON文件顶层是数组结构(即[ {...}, {...}, ... ])。如果JSON顶层是单个对象,data会是字典,此时for item in data会遍历字典的键(字符串),自然无法通过item['LocalizedNames']访问对应值。
验证方式:在json.load(file)后添加print(type(data)),若输出为<class 'dict'>,说明顶层是单个对象,需去掉循环直接处理:
data = json.load(file) localized_names = data.get('LocalizedNames', {}) ru_name = localized_names.get('RU-RU')
2. 安全处理缺少RU-RU字段的情况
如果JSON数组中部分条目没有RU-RU字段,直接用item['LocalizedNames']['RU-RU']会抛出KeyError。建议用字典的get()方法安全取值,还可设置默认值:
for item in data: # 获取LocalizedNames字典,无则返回空字典 localized_names = item.get('LocalizedNames', {}) # 获取RU-RU值,无则返回默认文本 ru_name = localized_names.get('RU-RU', '无俄语名称') # 传入RU-RU值给Item类(假设第二个参数需要单个字符串) newItem = Item(item['UniqueName'], ru_name, item['LocalizedDescriptions']) listItems.append(newItem) # 用append替代insert,无需维护counter变量
3. 匹配Item类的参数要求
原代码把整个LocalizedNames字典传给Item的第二个参数,如果Item类的第二个参数预期是单个字符串(俄语名称),则之前的传参方式错误,需改为传入ru_name而非item['LocalizedNames']。
调试建议
在循环中添加打印语句,确认每个条目的结构:
for item in data: print(f"当前条目UniqueName: {item['UniqueName']}") print(f"LocalizedNames结构: {item.get('LocalizedNames', '不存在')}") print(f"是否包含RU-RU: {'RU-RU' in item.get('LocalizedNames', {})}")
内容的提问来源于stack exchange,提问作者GameFusion
相关产品推荐
相关产品推荐

