[英]Iterate through a string array in JSON
我想从本地JSON文件导入数据到我的数据库Django。 但是,我有一个问题,因为我的JSON文件包含每个元素的String数组,我不能迭代它。
JSON文件的示例:
[
{
"key": "sword",
"name": "Sword",
"tier": 1,
"tab": [
"damages",
"cac"
]
},
{
"key": "bow",
"name": "Bow",
"tier": 1,
"tab": [
"damages",
"distance"
]
},
...
]
我使用脚本导入此数据,如下所示:
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('json_file', type=str)
def handle(self, *args, **options):
with open(options['json_file']) as f:
data_list = json.load(f)
for data in data_list:
Item.objects.get_or_create(
key=data['key'],
name=data['name'],
tier=data['tier'],
)
for build in data['tab']:
Build.objects.get_or_create(
key = build
)
上面的脚本不起作用,我在控制台中有以下错误:
KeyError: 'tab'
根据错误消息,看起来并非所有字典都有"tab"
键。 您可以使用以下功能使功能更安全:
class Command(BaseCommand):
def add_arguments(self, parser):
parser.add_argument('json_file', type=str)
def handle(self, *args, **options):
with open(options['json_file']) as f:
data_list = json.load(f)
for data in data_list:
Item.objects.get_or_create(
key=data['key'],
name=data['name'],
tier=data['tier'],
)
for build in data.get('tab', ()):
Build.objects.get_or_create(
key = build
)
此错误表示您的某个实例没有tab
键。 在这种情况下,您可以使用带有默认空列表值[]
get
方法跳过创建Build
实例:
for build in data.get('tab', []):
Build.objects.get_or_create(
key = build
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.