当前位置: 首页 > article >正文

Python中的实用工具JSON解析

对于Python不熟悉的同学,建议从本专栏第一篇开始观看
https://blog.csdn.net/qq_20330595/category_12844705.html

先上效果图

在这里插入图片描述

代码
import threading
import tkinter as tk
import json
from tkinter import scrolledtext
import tkinter.filedialog as filedialog

class JsonParserGUI:
    def __init__(self):
        self.root = tk.Tk()
        self.root.title("字符串转JSON")
        self.text_area = scrolledtext.ScrolledText(self.root, width=80, height=20)
        self.text_area.pack(fill=tk.BOTH, expand=1)
        # self.text_area = tk.Text(self.root)
        # self.text_area.pack(fill=tk.BOTH, expand=1)
        self.button_frame = tk.Frame(self.root)
        self.button_frame.pack(fill=tk.X)
        self.parse_button = tk.Button(self.button_frame, text="Parse JSON", command=self.parse_json)
        self.parse_button.pack(side=tk.LEFT)
        self.open_button = tk.Button(self.button_frame, text="Open File", command=self.open_file_thread)
        self.open_button.pack(side=tk.LEFT)

    def parse_json(self):
        try:
            json_data = json.loads(self.text_area.get(1.0, tk.END))
            self.text_area.delete(1.0, tk.END)
            self.text_area.insert(tk.END, json.dumps(json_data, indent=4))
        except json.JSONDecodeError as e:
            self.text_area.delete(1.0, tk.END)
            self.text_area.insert(tk.END, f"Error: {e}")
            
    def open_file_thread(self):
        thread = threading.Thread(target=self.open_file)
        thread.start()
        
    def open_file(self):
        file_path = tk.filedialog.askopenfilename()
        if file_path:
            with open(file_path, 'r') as file:
                file_content = file.read()
                self.update_text_area_thread(file_content)
                
    def update_text_area_thread(self, file_content):
        thread = threading.Thread(target=self.update_text_area, args=(file_content,))
        thread.start()
                        
    def update_text_area(self, json_data):
        self.text_area.delete(1.0, tk.END)
        self.text_area.insert(tk.END, json_data)

    def run(self):
        self.root.mainloop()


if __name__ == "__main__":
    gui = JsonParserGUI()
    gui.run()
    
    
def save_string_to_file(string, filename):
    with open(filename, 'w') as file:
        file.write(string)    

http://www.kler.cn/a/417343.html

相关文章:

  • 优惠券平台(十一):布隆过滤器、缓存空值、分布式组合的双重判定锁解决缓存穿透问题
  • 五十天精通硬件设计第四天-场效应管知识及选型
  • 【苍穹外卖 Day1】前后端搭建 Swagger导入接口文档
  • 链式结构二叉树(递归暴力美学)
  • 华为支付-免密支付接入免密代扣说明
  • Redis - 全局ID生成器 RedisIdWorker
  • SpringMVC工作原理【流程图+文字详解SpringMVC工作原理】
  • 前海湾地铁的腾通数码大厦背后的临时免费停车点探寻
  • Ps:存储 Adobe PDF - 一般
  • 区分 Hive on Spark 和 Spark on Hive
  • 大数据 MapReduce基础实战
  • 基于Java Springboot Vue3图书管理系统
  • 港科夜闻 |香港科大推出 InvestLM生成式人工智能平台,支持金融中小企应用AI技术潜力...
  • 【docker】docker常用命令汇总
  • SpringCloud 详解
  • 数据分析的尽头是web APP?
  • 使用C#开发VTK笔记(二)Part1-VTK系统结构解析
  • 使用Github Action将Docker镜像转存到阿里云私有仓库,供国内服务器使用,免费易用
  • TouchGFX源码分析1---(Event类 和Click Event类)
  • C++多态的实现原理
  • 最短距离和路径问题 ford
  • 数据结构-图-领接表存储
  • HDLCPPP原理与配置
  • 关于最近win11不能使用ie,而不能使用考试客户端的解决方法
  • 人工智能 实验2 jupyter notebook平台 打印出分类器的正确率
  • 11 设计模式之代理模式(送资料案例)