harshxmishra's picture
Rename b.py to app.py
1b7bf5e verified
Raw
History Blame Contribute Delete
1.83 kB
import streamlit as st
import json
# Load JSON Data
json_path = "deepseek.json"
with open(json_path, "r") as file:
json_data = json.load(file)
st.title("JSON Data Editor for Courses")
# Function to convert string inputs to appropriate types
def convert_type(value):
if value.lower() == "true":
return True
elif value.lower() == "false":
return False
elif value.isdigit():
return int(value)
try:
return float(value)
except ValueError:
return value
# Function to render nested dictionaries
def edit_json(data, key_prefix=""):
updated_data = {}
for key, value in data.items():
full_key = f"{key_prefix}{key}"
if isinstance(value, dict):
st.subheader(key)
updated_data[key] = edit_json(value, key_prefix=f"{full_key}.")
elif isinstance(value, list):
st.subheader(key)
updated_list = []
for i, item in enumerate(value):
if isinstance(item, dict):
updated_list.append(edit_json(item, key_prefix=f"{full_key}[{i}]."))
else:
input_value = st.text_area(f"{full_key}[{i}]", value=str(item))
updated_list.append(convert_type(input_value))
updated_data[key] = updated_list
else:
input_value = st.text_input(full_key, value=str(value))
updated_data[key] = convert_type(input_value)
return updated_data
updated_json = edit_json(json_data)
# Button to generate formatted updated JSON
if st.button("Generate Updated JSON"):
formatted_json = json.dumps(updated_json, indent=4, ensure_ascii=False).replace("True", "true").replace("False", "false")
st.code(formatted_json, language="json")