2012-06-21 38 views
5

Tôi đang tìm cách lưu trữ tệp JSON cục bộ trên iOS/Android trong ứng dụng Phonegap (Cordova).phonegap đọc và ghi tệp json

Về cơ bản, tôi lấy một tệp JSON từ máy chủ ($ .GETJSON) và tôi muốn lưu trữ tệp JSON đầu tiên và sau đó truy lục và sửa đổi nó.

Tôi đã xem FileWriter nhưng tôi không thấy mimetype ... ví dụ duy nhất cung cấp tệp văn bản.

Cảm ơn trước!

Nick

+1

tại sao bạn cần loại mime để lưu trữ json? dữ liệu trong trường hợp này sẽ được lưu trữ dưới dạng văn bản thuần túy chỉ – dhaval

Trả lời

13

Nick, chỉ cần sử dụng FileWriter.write để lưu dữ liệu JSON vào đĩa. JSON là một tệp dựa trên văn bản, do đó không cần phải đặt loại mime. Khi bạn sẵn sàng tải lại tệp, hãy sử dụng FileReader.readAsText. Trong trình xử lý "onloadend" của bạn của FileReader, phương thức sẽ được gọi với một sự kiện và event.target.result sẽ là dữ liệu JSON của bạn. Sau đó, bạn sẽ thực hiện

var myJson = JSON.parse(event.target.result); 

để biến văn bản thành đối tượng JSON.

+0

vì một số lý do event.target.result cho tôi không phải tệp 'json' đơn giản nhưng với \ r \ n ở mỗi dòng và JSON.parse không thành công. Làm thế nào để đối phó với điều đó? – 31415926

+0

Khi lưu, sử dụng JSON.stringify (yourJsonData); –

2

(đối với mẫu hoặc mặc định cài đặt) Tôi chỉ lưu trữ chúng trong các tập tin liên tục riêng biệt vì vậy tôi không cần phải sử dụng bất kỳ addons đặc biệt tiện ích tập tin hoặc các lệnh, siêu dễ dàng:

(function(){ 
angular.module('app').constant('settings_json', 
{ 
    "name":"settings", 
    "data":[ 
     { 
      "set":"globals", 
      "share_diagnostics":true, 
      "user_prefs_save_cloud": true   
     }, 
     { 
      "set":"user", 
      "fname":'', 
      "lname": '', 
      "telephone": '', 
      "email": ''  
     } 
    ] 
} 
)})(); 

Sau đó, trong ứng dụng của bạn: (sau khi tiêm 'settings_json')

var settings = angular.fromJson(settings_json); 
+0

Đây thực sự là một ý tưởng rất hay! – axtscz

Các vấn đề liên quan