㈠ android 怎樣將數據以json格式保存在手機文件中
json是一種輕量級數據交換格式,可以包含對象和數組,以下是一個json字元串的示例:
{"key":[{"key1":"value1","key2":value2",...}]}
json只是一種數據交換格式,並不是存儲格式,所以只要你正確地組織好json字元串後,跟其他文件是一樣存儲的;
同時建議你,如果你存儲的數據量比較多的話,建議存儲在android系統自帶的sqlite資料庫中,這樣操作起數據來更方便簡單;如果數據量非常少,只有三五個欄位存儲,那樣使用android的SharedPreferences可能會是更好的選擇,希望你根據應用需求適當選用。
㈡ 怎麼把json字元串存
1、假如json字元串的最大長度不會超過1024位元組,那麼我們可以定義表結構varchar(1024)。如下圖,我們定義一個表t_save_json,有一個自增的id欄位以及json欄位保存json字元串。
2、如果json字元串中字元是雙引號標記的,如{"name":"Q花榮","age":18,"a":"第一條信息"}。那麼我們寫sql語句保存到資料庫時直接用引號括起來就行。如:insert into t_save_json set json = '{"name":"Q花榮","age":18,"a":"第一條信息"}';
3、如果json字元串中字元是單引號標記的,如{'name':'Q花榮','age':18,'a':'第二條信息'}。那麼通常的做法需要對單引號進行轉義,寫sql語句時連續兩個''表示單引號。如:insert into t_save_json set json = '{''name'':''Q花榮'',''age'':18,''a'':''第二條信息''}';
但筆者發現mysql中,sql中用雙引號來標記json字元串也可以,一般比較少用,筆者也學習了。如:insert into t_save_json set json = "{'name':'Q花榮','age':18,'a':'第三條信息'}";
4、如果json字元串長度太大,那麼我們建表時還是應該選擇TEXT類型。TEXT採用字元存儲,專門為存儲大數據而設計。如下圖,我們定義表t_save_json_2,json欄位類型為TEXT,保存大字元串。
5、使用相同的sql語句,保存json字元串到表t_save_json_2中。
㈢ 程序開發中json 存儲結構化數據是怎麼回事呢
使用 json 存儲結構化數據就是從文件中讀寫字元串很容易。
1.數值就要多費點兒周折,因為 read() 方法只會返回字元串,應將其傳入 int() 這樣的函數,就可以將 '123' 這樣的字元串轉換為對應的數值 123。當你想要保存更為復雜的數據類型,例如嵌套的列表和字典,手工解析和序列化它們將變得更復雜。
好在用戶不是非得自己編寫和調試保存復雜數據類型的代碼,Python 允許你使用常用的數據交換格式 JSON(JavaScript Object Notation)。標准模塊 json 可以接受 Python 數據結構,並將它們轉換為字元串表示形式;此過程稱為 序列化。從字元串表示形式重新構建數據結構稱為 反序列化。序列化和反序列化的過程中,表示該對象的字元串可以存儲在文件或數據中,也可以通過網路連接傳送給遠程的機器。
Note
2.JSON 格式經常用於現代應用程序中進行數據交換。許多程序員都已經熟悉它了,使它成為相互協作的一個不錯的選擇。
如果你有一個對象 x,你可以用簡單的一行代碼查看其 JSON 字元串表示形式:
>>> json.mps([1, 'simple', 'list'])
'[1, "simple", "list"]'
mps() 函數的另外一個變體 mp(),直接將對象序列化到一個文件。所以如果 f 是為寫入而打開的一個 文件對象,我們可以這樣做:
json.mp(x, f)
為了重新解碼對象,如果 f 是為讀取而打開的 文件對象:
x = json.load(f)
3.這種簡單的序列化技術可以處理列表和字典,但序列化任意類實例為 JSON 需要一點額外的努力。 json 模塊的手冊對此有詳細的解釋。
See also
pickle - pickle 模塊
4.與 JSON 不同,pickle 是一個協議,它允許任意復雜的 Python 對象的序列化。因此,它只能用於 Python 而不能用來與其他語言編寫的應用程序進行通信。默認情況下它也是不安全的:如果數據由熟練的攻擊者精心設計, 反序列化來自一個不受信任源的 pickle 數據可以執行任意代碼。