我希望来自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'}
但网址http://127.0.0.1:8000/parser
显示{"lat": "36.15899561", "lon": "-115.17276155"}
我可能知道原因吗?
答案 0 :(得分:2)
jsoninfo
的赋值发生在for循环之外,但geoinfo
的赋值发生在它内部。您需要将所有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对象作为您的响应,而不是两个由换行符分隔的独立对象的编码。
答案 1 :(得分:0)
每次循环时都会覆盖geoinfo
。您没有存储所有结果。考虑创建一个空列表,附加到它,然后将其作为响应发送回来