2012-05-07 22 views
12

Tôi đã lưu một tệp văn bản trong res/raw thư mục trong nhật thực. Tôi đang hiển thị ở đây nội dung của tệp đó:Phân tích cú pháp JSON trong Android - từ thư mục tài nguyên

{ 
    "Categories": { 
     "Category": [ 
      { 
       "cat_id": "3", 
       "cat_name": "test" 
      }, 
      { 
       "cat_id": "4", 
       "cat_name": "test1" 
      }, 
      { 
       "cat_id": "5", 
       "cat_name": "test2" 
      }, 
      { 
       "cat_id": "6", 
       "cat_name": "test3" 
      } 
     ] 
    } 
} 

Tôi muốn phân tích cú pháp mảng JSON này. Tôi có thể làm cái này như thế nào?

Ai đó có thể giúp tôi được không ??

Xin cảm ơn trước.

+1

Wow 9K, tốt sẽ @Waqas – Lucifer

+0

bản sao có thể có của [Cách phân tích chuỗi json trong Android?] (Http://stackoverflow.com/questions/8091051/how-to-parse-json-string-in-android) –

+0

Hãy cho tôi biết. làm thế nào tôi có thể viết dữ liệu này trong chuỗi ?? Giúp tôi –

Trả lời

34
//Get Data From Text Resource File Contains Json Data.  
InputStream inputStream = getResources().openRawResource(R.raw.json); 
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 

int ctr; 
try { 
    ctr = inputStream.read(); 
    while (ctr != -1) { 
     byteArrayOutputStream.write(ctr); 
     ctr = inputStream.read(); 
    } 
    inputStream.close(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Log.v("Text Data", byteArrayOutputStream.toString()); 
try { 
    // Parse the data into jsonobject to get original data in form of json. 
    JSONObject jObject = new JSONObject(
      byteArrayOutputStream.toString()); 
    JSONObject jObjectResult = jObject.getJSONObject("Categories"); 
    JSONArray jArray = jObjectResult.getJSONArray("Category"); 
    String cat_Id = ""; 
    String cat_name = ""; 
    ArrayList<String[]> data = new ArrayList<String[]>(); 
    for (int i = 0; i < jArray.length(); i++) { 
     cat_Id = jArray.getJSONObject(i).getString("cat_id"); 
     cat_name = jArray.getJSONObject(i).getString("cat_name"); 
     Log.v("Cat ID", cat_Id); 
     Log.v("Cat Name", cat_name); 
     data.add(new String[] { cat_Id, cat_name }); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

"Danh mục" là đối tượng Json và "Danh mục" là Json Array chứa tất cả các bản ghi. –

+1

Cảm ơn bạn rất nhiều Deval. Điều này hoạt động tốt ...... :-) thưởng thức –

0
  1. đọc nó thành một String
  2. Tạo một JSONArray với lấy String
  3. Dùng get() phương pháp để lấy dữ liệu của nó
2

Đây là mã của bạn:

String fileContent; 
      JSONObject jobj = new JSONObject(fileContent); 
      JSONObject categories = jobj.getJSONObject("Categories"); 
      JSONArray listCategory = categories.getJSONArray("Category"); 
      for(int i = 0; i < listCategory.length(); i++) { 
       JSONObject entry = listCategory.getJSONObject(i); 
       //DO STUFF 
      } 
+0

Tôi nên chuyển nội dung gì trong tệpContent? Vâng, tôi biết rằng đó là chuỗi. Nhưng làm thế nào để vượt qua chuỗi này trong trường hợp của tôi? Vui lòng cung cấp cho tôi định dạng –

+0

tệp Nội dung là nội dung của tệp của bạn ở dạng res/raw. Bạn cũng cần mã để tải nó? – StErMi

+0

Xin cảm ơn rất nhiều. Tôi đã thử điều này. Nó hoạt động tốt đẹp :) –

0

A khuôn khổ ndroid có một người trợ giúp JsonReader in android.util package

Làm việc như một sự quyến rũ, đã trình bày ví dụ tuyệt vời. Trong khối lỗi nhỏ đầu tiên với khung vuông vắng mặt '}':

public List readJsonStream(InputStream in) throws IOException { 
    JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8")); 
    try { 
     return readMessagesArray(reader); 
    } finally { 
     reader.close(); 
    } 
} 

Cũng tồn tại thư viện lớn từ google-devs GSON, mang đến cho bạn khả năng để lập bản đồ cấu trúc json thẳng vào mô hình Java: có một cái nhìn here

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