Tôi đang tạo ứng dụng Android tạo tệp văn bản có các đối tượng JSON và ghi nó vào bộ nhớ trong. Tôi có đoạn code sau đây để làm điều đó:Bộ nhớ trong của Android, cách phân tích cú pháp đúng cách tệp văn bản JSON
JSONObject myJSON = new JSONObject();
//Set the JSON object with website, length and Id (time-stamp)
try {
myJSON.put("Length", trim)
.put("Website", data)
.put("Id", tx);
} catch (JSONException e1) {
e1.printStackTrace();
}
//Convert JSON object to a string and add a comma
String myJSONString = myJSON.toString();
myJSONString += ", ";
try {
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_APPEND);
fos.write(myJSONString.getBytes());
fos.close();
//Log.d(TAG, "Written to file");
} catch (Exception e) {
Log.d(TAG, "cought");
e.printStackTrace();
}
Bây giờ tôi nhận được một file văn bản trông giống như vậy:
{"Id":"20101211T155146","Length":10}, {"Id":"20101211T155155","Length":10},
{"Id":"20101211T155203","Length":10}, {"Id":"20101211T155252","Length":10},
Tôi muốn đến nay thu thập dữ liệu trong file JSON. Ứng dụng cần viết, lưu trữ và truy xuất JSON. Vấn đề là khi tôi đi phân tích cú pháp các đối tượng JSON từ tệp bằng cách sử dụng:
String x = "";
InputStream is = this.getResources().openRawResource(R.raw.pwh);
byte [] buffer = new byte[is.available()];
while (is.read(buffer) != -1);
String jsontext = new String(buffer);
JSONArray entries = new JSONArray(jsontext);
x = "JSON parsed.\nThere are [" + entries.length() + "]\n\n";
int i;
for (i=0;i<entries.length();i++)
{
JSONObject post = entries.getJSONObject(i);
x += "------------\n";
x += "Id:" + post.getString("Id") + "\n";
x += "Length:" + post.getString("Length") + "\n\n";
}
Nó phát sinh lỗi. Tôi nhận được mã phân tích cú pháp từ một hướng dẫn tuyệt vời tại: http://www.ibm.com/developerworks/web/library/x-andbene1/?ca=drs-#author1 Trong ví dụ đó, mã đang chờ dấu ngoặc xung quanh toàn bộ tệp và không có dấu phẩy nào sau đối tượng cuối cùng. Vì vậy, tôi sẽ cần:
[{"Id":"20101211T155146","Length":10}, {"Id":"20101211T155155","Length":10},
{"Id":"20101211T155203","Length":10}, {"Id":"20101211T155252","Length":10}]
Nhưng tôi viết những dòng JSON đó một lần vào mã của tôi; Làm cách nào tôi có thể thao tác tệp văn bản JSON để tải tệp theo định dạng mong muốn?
UPDATE:
Vấn đề vẫn là nếu người dùng viết các mảng JSON để các tập tin và sau đó trở lại và thay đổi nó một lần nữa, bạn sẽ có được hai mảng JSON trong tập tin đó. Giống như vậy:
[
{
"phonenumber": "15555215554",
"time": "20110113T173835",
"username": "edit username",
"email": " edit email",
"password": "edit password"
}
][
{
"phonenumber": "15555215554",
"time": "20110113T173900",
"username": "edit username",
"email": " edit email",
"password": "edit password"
},
{
"phonenumber": "15555215554",
"time": "20110113T173900",
"username": "edit username",
"email": " edit email",
"password": "edit password"
}
]
Làm thế nào tôi có thể đọc mảng đầu tiên, thêm thứ hai và sau đó viết lại tệp với cả hai mảng được hợp nhất thành một?
Vui lòng xem cập nhật – Chris