在Django模板中解析和显示嵌套的JSON

时间:2017-06-04 16:57:14

标签: python json django

我正在尝试打印API调用的结果,该调用返回了相对深入嵌套的JSON结果。我正在用Python 2.7和Django 1.11做这个项目。

我有以下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'
}]

一切都很棒,它显示出眼睛&#39;和预期的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>

为你的帮助推进新手的感激和好的juju。

1 个答案:

答案 0 :(得分:1)

您可以使用.访问dict的词典,因此问题的解决方案是data.emotion.document.emotion.anger