请基于以下要求写代码:基于Python 语言,使用tkinter 编写一个可视化json解析工具
时间: 2024-01-22 15:18:04 浏览: 25
以下是一个简单的 Python tkinter 程序,可以将输入的 JSON 字符串解析并以可视化方式显示:
```python
import json
import tkinter as tk
from tkinter import filedialog
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.json_text = tk.Text(self, height=20, width=50)
self.json_text.pack(side="left")
self.parse_button = tk.Button(self)
self.parse_button["text"] = "Parse JSON"
self.parse_button["command"] = self.parse_json
self.parse_button.pack(side="left")
self.tree = tk.ttk.Treeview(self)
self.tree.pack(side="left")
self.scrollbar = tk.Scrollbar(self, orient="vertical", command=self.tree.yview)
self.scrollbar.pack(side="right", fill="y")
self.tree.configure(yscrollcommand=self.scrollbar.set)
def parse_json(self):
try:
json_str = self.json_text.get("1.0", "end-1c")
json_obj = json.loads(json_str)
self.tree.delete(*self.tree.get_children())
self.process_json_obj(json_obj, "")
except Exception as e:
tk.messagebox.showerror("Error", str(e))
def process_json_obj(self, json_obj, parent_id):
if isinstance(json_obj, dict):
for key, value in json_obj.items():
item_id = self.tree.insert(parent_id, "end", text=str(key), open=True)
self.process_json_obj(value, item_id)
elif isinstance(json_obj, list):
for index, value in enumerate(json_obj):
item_id = self.tree.insert(parent_id, "end", text=str(index), open=True)
self.process_json_obj(value, item_id)
else:
self.tree.insert(parent_id, "end", text=str(json_obj))
if __name__ == "__main__":
root = tk.Tk()
app = Application(master=root)
app.mainloop()
```
此程序包含一个文本框,用于输入 JSON 字符串,一个按钮用于解析 JSON 并将其显示在树状图中。