levelDB的数据查看(非常详细)

发布于:2025-05-10 ⋅ 阅读:(12) ⋅ 点赞:(0)

起因:.net大作业天气预报程序(WPF)答辩时,老师问怎么维持数据持久性的,启动时加载的数据存在哪里,我明白老师想考的应该是json文件的解析(正反),半天没答上来存那个文件了(老师默认这个文件是自己建的),回头我发现用的模仿浏览器localstorage  的

Blazored.LocalStorage服务(底层基于levelDB键值存储系统)管理数据,全交出去了根本没管这个,而且存储形式时键值对(最后得到的其实是levelDB数据库文件),那么应该怎样看这个文件夹里的真实数据呢,得通过其他工具,我这里用的是LevelDBViewer.jar

工具:LevelDBViewer.jar(没jdk的先装jdk才能用) 

https://github.com/SuperMarcus/LevelDBViewer/releases/tag/v1.0

然后运行(要么在你放这个jar包的文件夹里打开cmd,  要么就用绝对地址哈,有的不行的可能得管理员运行cmd) 

# 或者双击jar包
java -jar LevelDBViewer.jar

界面:

打开leveldb文件夹,比较难找直接把路径复制过来就行了

 

在哪里找leveldb文件夹:如图 C:/用户名/AppData/Local/你的项目名/.....

 

打开后出现(大概意思是最多打开多少个文件,这个文件夹里可能有很多文件,我也不太明白,直接continue)

 

变成这样

随便点一条左边的,String就是json字符串(但是编码是unicode,尤其是中文),Hex是底层16进制数表示

所以还得解码让json字符串变成我们能看懂的。

 

解码:把这一串json字符串处理成我们能看懂的

import json

def decode_and_pretty_print(json_str):
    try:
        # 解码JSON字符串
        data = json.loads(json_str)
        # 以易读格式输出
        print(json.dumps(data, ensure_ascii=False, indent=2))
    except json.JSONDecodeError:
        print("输入的不是有效的JSON字符串")
    except Exception as e:
        print(f"发生错误: {e}")

if __name__ == "__main__":
    # 要处理的JSON字符串
    json_str = r'{"Name":"\u957F\u6625\u5E02","Info":"\u5409\u6797\u7701 \u957F\u6625\u5E02","Lat":43.816996,"Lon":125.323643}'
    decode_and_pretty_print(json_str)    

结果:其实就是为了维持数据持久性中当前位置存储的数据(这还是json格式哈,实际上在存储时虽然是以键值对的方式存储,但是值是json字符串)

{
  "Name": "长春市",
  "Info": "吉林省 长春市",
  "Lat": 43.816996,
  "Lon": 125.323643
}

 

 


网站公告

今日签到

点亮在社区的每一天
去签到