Gradio/Streamlit 格式化 json(qbit)

qbit發表於2024-11-21

前言

  • 技術棧

    Windows 10
    Python  3.11.8
    Gradio  5.6.0
    Streamlit 1.40.1

Gradio 格式化 json

  • 示例程式碼

    import gradio as gr
    import json
    
    def format_json(input_json):
      try:
          json_obj = json.loads(input_json)
          formatted_json = json.dumps(json_obj, indent=4)
          # 返回兩個相同的值,一個用於更新輸入框,一個用於顯示在程式碼框中
          return formatted_json, formatted_json
      except json.JSONDecodeError:
          return "輸入的字串不是有效的JSON格式。", ""
    
    with gr.Blocks() as demo:
      # 建立一個文字輸入框,讓使用者輸入JSON字串
      json_input = gr.Textbox(lines=3, label="請輸入JSON字串")
      # 建立一個程式碼框,用於高亮顯示格式化後的JSON
      json_code = gr.Code(label="格式化後的JSON程式碼", language="json")
      # 建立一個按鈕,使用者點選後格式化JSON字串
      format_btn = gr.Button("格式化JSON")
      
      # 繫結按鈕點選事件,更新輸入框和程式碼框的值
      format_btn.click(fn=format_json, inputs=json_input, outputs=[json_input, json_code])
    
    demo.launch()
  • 格式化前截圖
    image.png
  • 格式化後截圖
    image.png

Streamlit 格式化 json

  • 示例程式碼

    import streamlit as st
    import json
    
    def format_json(user_input):
      try:
          # 嘗試將輸入的字串解析為JSON物件
          json_obj = json.loads(user_input)
          
          # 將JSON物件格式化為字串
          formatted_json = json.dumps(json_obj, indent=4)
          
          return formatted_json
      except json.JSONDecodeError:
          # 如果輸入的字串不是有效的JSON,返回錯誤資訊
          return "輸入的字串不是有效的JSON格式。"
    
    
    user_input = st.text_area("請輸入JSON字串")
    
    if st.button("格式化JSON"):
      # 格式化輸入的JSON字串
      formatted_json = format_json(user_input)
      
      # 輸出格式化後的 json
      st.json(formatted_json)
  • 示例截圖
    image.png
  • 截至 Streamlit 1.40.1,Streamlit 似乎無法複用資料框輸出內容

相關閱讀

  • Gradio 官方文件:https://www.gradio.app/docs/gradio/json
  • Streamlit 官方文件:https://docs.streamlit.io/develop/api-reference/data/st.json
本文出自 qbit snap

相關文章