【问题标题】:Convert nested JSON to HTML Unordered List with Python使用 Python 将嵌套的 JSON 转换为 HTML 无序列表
【发布时间】:2022-01-10 15:37:23
【问题描述】:

我在 Google 上进行了大量搜索,但没有找到合适的答案,适合那些希望任意嵌套 JSON(例如从 API 响应中获取)并使用 Python 使用 HTML 将其显示为无序列表的人。

最终,这个问题用一个相当短的递归函数解决了。

这是我正在处理的输入类型的示例:

{
  "_id": "61dc4e9130473a8465a11cd0",
  "index": 0,
  "guid": "a2a7e550-8bf4-4be5-b0e0-2b124a2ca7e1",
  "isActive": false,
  "balance": "$1,011.28",
  "picture": "http://placehold.it/32x32",
  "age": 25,
  "eyeColor": "green",
  "name": "Monique Dickerson",
  "gender": "female",
  "company": "AQUASURE",
  "about": "Dolore dolor excepteur tempor excepteur nulla occaecat Lorem dolor cillum sint velit. Minim labore irure ea anim duis in enim laboris. Aute amet ut sunt ea. Do irure sint commodo ea id. Amet dolore culpa anim irure ipsum est labore nostrud irure.\r\n",
  "registered": "2015-12-15T11:10:14 +05:00",
  "latitude": -63.913924,
  "longitude": -21.554531,
  "tags": [
    "eiusmod",
    "dolore",
    "pariatur",
    "in",
    "ipsum",
    "Lorem",
    "adipisicing"
  ]
}

这是所需的输出:

  • _id: 61dc4e9130473a8465a11cd0
  • 索引:0
  • guid: a2a7e550-8bf4-4be5-b0e0-2b124a2ca7e1
  • isActive:错误
  • 余额:1,011.28 美元
  • 图片:http://placehold.it/32x32
  • 年龄:25
  • 眼睛颜色:绿色
  • 姓名:莫妮克·迪克森
  • 性别:女性
  • 公司:AQUASURE
  • 关于:Dolore dolor excepteur tempor excepteur nulla occaecat Lorem dolor cillum sint velit。最小劳动 irure ea anim duis in enim labis。 Aute amet ut sunt ea。做 irure sint commodo ea id。 Amet dolore culpa anim irure ipsum est labore nostrud irure。\r\n
  • 注册时间:2015-12-15T11:10:14 +05:00
  • 纬度:-63.913924
  • 经度:-21.554531
  • 标签:
    • eiusmod
    • 多洛尔
    • 偏方
    • ipsum
    • 洛雷姆
    • 消脂

【问题讨论】:

    标签: python json recursion nested-json


    【解决方案1】:

    我用这段代码成功解决了这个问题:

    items = []
    def render(json_data, v=""):
        if isinstance(json_data, dict):
            items.append(f"<ul>")
            for k2, v2 in json_data.items():
                render(k2 ,v2) # <---If we have a dict, apply function again
            items.append(f"</ul>")
        elif isinstance(v, dict):
            items.append(f"<li>{json_data}: <ul>")
            for k2, v2 in v.items():
                render(k2 ,v2) # <---If we have a dict, apply function again
            items.append("</ul></li>")
        elif isinstance(v, list):
            items.append(f"<li>{json_data}:<ul>")
            for i in v:
                if isinstance(i, str):
                    items.append(f"<li>{i}</li>")
                elif isinstance(i, dict):
                    render(i, v)
            items.append("</ul></li>")
        else:
            items.append(f"<li>{json_data}: {v}</li>")
    
    render(data)
    html_str = "".join(items)
    html_str
    

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 2019-10-19
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2021-11-25
      • 2017-09-30
      • 2010-12-23
      相关资源
      最近更新 更多