起因:.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 jsondef 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
}
?
?