You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask应用:解析API返回的嵌套JSON字符串为字典以在HTML中取值

解决Flask模板中无法访问嵌套JSON字符串字段的问题

这个问题其实很常见——你拿到的content字段是JSON格式的字符串,不是现成的字典,所以模板里直接按字典访问肯定会报错。咱们只需要在后端把这个字符串解析成Python字典,模板就能正常使用了。

步骤1:在后端解析JSON字符串

在你获取到API响应后,遍历data列表,对每个item的content字段用json.loads()做解析。为了避免解析失败导致程序崩溃,建议加上异常处理:

修改你的Flask视图函数代码如下:

import json
from flask import Flask, render_template, jsonify
import requests

app = Flask(__name__)

@app.route('/')
def index():
    url = "http://remote-server/v1/info"
    params = {"offset":0,"limit":10}
    response = requests.post(url, json=params)
    data = response.json()
    
    # 关键:解析content字段的JSON字符串为字典
    for item in data:
        if 'content' in item and isinstance(item['content'], str):
            try:
                item['content'] = json.loads(item['content'])
            except json.JSONDecodeError as e:
                # 解析失败时的 fallback 处理,比如设为空字典
                print(f"解析content字段出错: {e}")
                item['content'] = {}
    
    return render_template('index.html', data=data)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)

步骤2:模板中正常访问字段

现在content已经是字典类型了,你原来写的模板代码就能正常工作了。如果担心某些字段不存在会报错,可以用get()方法做容错处理(可选):

<div>
    {% for doc in data %}
    <div class="user_info">{{ doc['full_name'] }}</div>
    <div class="user_info">{{ doc['email'] }}</div>
    <!-- 用get()避免KeyError -->
    <div class="user_info">{{ doc['content'].get('info', {}).get('foo', '暂无数据') }}</div>
    <div class="user_info">{{ doc['content'].get('info', {}).get('location', '暂无数据') }}</div>
    {% for item in doc.content.get('items', []) %}
    <div>{{ item }}</div>
    {% endfor %}
    {% endfor %}
</div>

这样修改后,你就能在模板里像访问普通字典一样提取content里的嵌套字段了。

内容的提问来源于stack exchange,提问作者PaCi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:27:40