python for循环不返回多个dict

python for循环不返回多个dict,python,django,Python,Django,我需要来自xml\u解析器视图的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)

我需要来自
xml\u解析器
视图的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”}
我可以知道为什么吗?

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
。您没有存储所有结果。考虑创建一个空列表,追加到它,然后把它作为响应< /p>发送,当然,这会给他一个JSON数组,其中有两个对象,而不是他所要求的两个单独的顶级对象(因为他所要求的不是JSON,所以别无选择,只能这样做)。我假设他实际上想要输出一个JSON对象。哦。。。这是给我的清单,对吗?现在输出是
[{“lat”:“36.15900011”,“lon”:“-115.17205183”},{“lat”:“36.15899561”,“lon”:“-115.17276155”}
,但看起来像是我的jquery
控制台.debug(r.jsoninfo.lat+,“+r.jsoninfo.lon)
给了我这个错误`r、 jsoninfo未定义这似乎是一个完全不同的问题,但我认为您可能需要的是
console.debug(r[0].lat+','+r[0].lon)
。如果
r
是解码后的JSON对象,那么这将为您提供JSON数组中的第一个元素。顺便说一句,如果您有关于Javascript和处理AJAX响应的单独问题,您可能应该在另一个问题中问这个问题。此外,在提出问题之前,确保你自己诚实地努力解决问题。那样你会学到更多。。好啊我从这里开始。。老实说,在询问之前,我会尽力修复它……您不能获得准确的输出,因为这不是有效的JSON。有效的JSON必须是一个单一的东西——一个数字、一个对象、一个数组等等——而不是两个独立的东西。最接近您想要的是一个包含这两个对象的数组,但它不会(或到
pprint
as)与您输出的内容完全相同。