我试图打印一个API调用的结果,它返回的JSON结果比较深。我正在用Python 2.7和Django 1.11来完成这个项目。在Django模板中解析和显示嵌套的JSON
我有以下view.py功能:
def nlu_analysis(request):
if request.method == 'POST':
text2send = request.POST.get('text2send')
natural_language_understanding = NaturalLanguageUnderstandingV1(
version='2017-02-27',
username='####',
password='####')
response = natural_language_understanding.analyze(
text=text2send,
features=[features.Entities(), ..., features.SemanticRoles()])
return render(request, 'watson_nlu/analysis.html', {'data': response})
当我在我的.html文件使用下面的模板代码:
{% for k in data.keywords %}
<p>Text - {{ k.text }}</p>
<p>Relevance - {{ k.relevance }}</p>
{% endfor %}
解析和显示JSON与一级嵌套像这样:
'keywords': [{
'relevance': 0.946673,
'text': 'eyes'
}]
一切都很好,它显示'眼睛'和0.946673如预期。
我找不出适当的语法用于获取到“愤怒”,“高兴”等,结果,它们嵌套更深入像这样:
{
'emotion': {
'document': {
'emotion': {
'anger': 0.195192,
'joy': 0.082313,
'sadness': 0.644314,
'fear': 0.207166,
'disgust': 0.103676
}
}
}
什么是最有效的方法为了达到这个目标?
这绝不是:
<p>Anger - {{ data['emotion.document.template.anger'] }}</p>
提前新手的感谢和良好的朱朱对你有所帮助。
@RajaSimon我试过,
愤怒 - {{data.emotion.document.template.anger}}
并没有返回但'愤怒 - '。任何其他的想法。谢谢。 – sctoy是的。它返回,愤怒 - {u'document':{u'emotion':{u'anger':0.088841,u'joy':0.048228,u'sadness':0.115575,u'fear':0.078872,u'disgust' :0.33166}}} – sctoy
@RajaSimon,哎呀!我是我的错字。我在建议后逐层建立了呼叫,并意识到我在第三层中包含了错字'模板'而不是'情绪'。现在工作。如果您想以解决方案而不是评论的形式输入您的帮助,我会将其标记为解决方案。谢谢。 – sctoy