我試圖打印一個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