python for循环不返回多个di

2024-10-03 13:18:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要来自xml_parser视图的json响应。我只得到一个dict而不是多个dict。。似乎我的for循环逻辑是错误的。。你能帮我纠正一下吗。。?你知道吗

def xml_parser(request):
    for child in root.findall('GetAll'):
        for geoloc in child.iter('loc'):
            geoinfo = geoloc.attrib
            pprint.pprint(geoinfo)
    jsoninfo = json.dumps(geoinfo, ensure_ascii=False)
    return HttpResponse(jsoninfo, content_type='application/json')

好的,现在pprint显示,这就是我想要的输出

{'lat': '36.15900011', 'lon': '-115.17205183'}
{'lat': '36.15899561', 'lon': '-115.17276155'}

但是url http://127.0.0.1:8000/parser显示了{"lat": "36.15899561", "lon": "-115.17276155"},我能知道为什么吗?你知道吗


Tags: in视图jsonchildparserforxml逻辑
2条回答

jsoninfo的赋值发生在for循环外部,而geoinfo的赋值发生在for循环内部。您需要将所有geoloc.attrib值聚合到一个列表中,并在末尾将其转换为json:

def xml_parser(request):
    infos = []

    for child in root.findall('GetAll'):
        for geoloc in child.iter('loc'):
            infos.append(geoloc.attrib)

    jsoninfo = json.dumps(infos, ensure_ascii=False)
    return HttpResponse(jsoninfo, content_type='application/json')

这假设您实际上打算输出一个JSON对象作为响应,而不是由换行符分隔的两个独立对象编码。你知道吗

每次在循环中都会覆盖geoinfo。您没有存储所有结果。考虑创建一个空列表,附加到它,并将其作为响应发送回去

相关问题 更多 >