Đọc tệp json trong Android [đã đóng]


84

Tôi có tệp json sau đây. Tôi muốn biết tôi nên đặt tệp json ở đâu trong dự án của mình và cách đọc và lưu trữ tệp đó.

{
"aakash": [
    [  0.070020,0.400684],
    [  0.134198,0.515837],
    [  0.393489,0.731809],
    [  0.281616,0.739490]

],
"anuj": [
    [  1287.836667,-22.104523],
    [  -22.104523,308.689613],
    [  775.712801,-13.047385],
    [  -13.047385,200.067743]
]
}

3
Trước khi đăng câu hỏi ở đây, bạn cần phải googling. Có rất nhiều ví dụ có sẵn trên mạng.
Chirag

2
@ChiragRaval Tôi đồng ý. Nhưng tôi đặt tệp json ở đâu để đọc từ tệp?
Aakash Anuj 11/12/12

nếu bạn có tập tin json tĩnh sau đó bạn có thể đặt nó bên tài sản và thư mục thô trong dự án của bạn, nhưng nếu bạn đang tạo tệp json động sau đó tạo ra một tập tin trong SDCard
ρяσѕρєя K

2
@AakashAnuj: xem câu trả lời của Faizan và đưa tệp của bạn vào thư mục nội dung
ρяσѕρєя K 11/12/12

16
Không biết tại sao điều này đã được đóng cửa. Câu hỏi dường như hoàn toàn rõ ràng và chính xác đối với tôi. 1) Các tệp dữ liệu json được lưu trữ ở đâu khi phát triển ứng dụng Android. 2) Làm cách nào để đọc dữ liệu đó? Chắc chắn, điều này có thể được chia thành hai câu hỏi, nhưng hai câu hỏi rất liên quan (bạn sẽ không bao giờ sử dụng câu này mà không có câu kia) người ta cũng có thể hỏi cả hai, điều mà AakashAnuj đã làm. Hơn nữa, @Faizan đã làm rất tốt khi trả lời nó, điều này làm mất hiệu lực của khiếu nại "không thể trả lời". Bản án? Câu hỏi hợp lệ
SMBiggs

Câu trả lời:


210

Đặt tệp đó vào tài sản .

Đối với dự án được tạo trong dự án Android Studio, bạn cần tạo thư mục tài sản trong thư mục chính.

Đọc tệp đó dưới dạng:

public String loadJSONFromAsset(Context context) {
        String json = null;
        try {
            InputStream is = context.getAssets().open("file_name.json");

            int size = is.available();

            byte[] buffer = new byte[size];

            is.read(buffer);

            is.close();

            json = new String(buffer, "UTF-8");


        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;

    }

và sau đó bạn có thể chỉ cần đọc stringtrả về này bằng hàm này như

JSONObject obj = new JSONObject(json_return_by_the_function);

Để biết thêm chi tiết về JSON, hãy xem http://www.vogella.com/articles/AndroidJSON/article.html

Hy vọng bạn sẽ đạt được những gì bạn muốn.


3
điều gì sẽ xảy ra nếu kích thước tệp gần như là 6 đến 7 MB? nếu lưu trữ tệp chứa thành chuỗi nó ném ra một ngoại lệ (hết bộ nhớ). Có cách nào để truy xuất chỉ một jsonObject tại một thời điểm từ tệp JsonArray không?
Hiren Dabhi

Làm cách nào để đọc tệp JSON từ một liên kết web?
Si8

7
Đối với dự án được tạo trong dự án Android Studio, bạn cần tạo thư mục tài sản trong thư mục chính là gì asset foldermain folder?
Hirdesh Vishwdewa

3
Phân bổ bộ đệm dựa trên kết quả trả về bởi sẵn có () không chính xác theo tài liệu Java: docs.oracle.com/javase/7/docs/api/java/io/… "Lưu ý rằng trong khi một số triển khai của InputStream sẽ trả về tổng số byte trong luồng, nhiều thì không. Sẽ không bao giờ đúng nếu sử dụng giá trị trả về của phương thức này để cấp phát bộ đệm nhằm giữ tất cả dữ liệu trong luồng này. "
Andrew

@ SiKni8 Xem tại đây: stackoverflow.com/a/9606629/1536976
Trilarion

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.