2011-08-04 49 views
8

Tôi nhận được một số dữ liệu dưới dạng phản hồi JSON từ máy chủ. Tôi trích xuất dữ liệu tôi cần và tôi muốn đưa dữ liệu này vào một mảng chuỗi. Tôi không biết kích thước của dữ liệu, vì vậy tôi không thể khai báo mảng đó là tĩnh. Tôi tuyên bố một mảng chuỗi động:Chèn chuỗi động vào một mảng chuỗi trong Android

String[] xCoords = {}; 

Sau này tôi chèn dữ liệu trong mảng:

for (int i=0; i<jArray.length(); i++) { 
     JSONObject json_data = jArray.getJSONObject(i); 
     xCoords[i] = json_data.getString("xCoord"); 
    } 

Nhưng tôi nhận được

java.lang.ArrayIndexOutOfBoundsException 
Caused by: java.lang.ArrayIndexOutOfBoundsException 

cách để tự động chèn chuỗi là gì vào một mảng chuỗi?

Trả lời

38

Sử dụng ArrayList mặc dù nó không phải là thực sự cần thiết nhưng chỉ tìm hiểu nó:

ArrayList<String> stringArrayList = new ArrayList<String>(); 

    for (int i=0; i<jArray.length(); i++) { 
     JSONObject json_data = jArray.getJSONObject(i); 
     stringArrayList.add(json_data.getString("xCoord")); //add to arraylist 
    } 

//if you want your array 
String [] stringArray = stringArrayList.toArray(new String[stringArrayList.size()]); 
+0

Tôi đã thử với điều này, nhưng nếu tôi chỉ gõ' String [] xCoords = xCoordsList.toArray(); 'nó mang lại cho tôi một' Kiểu không khớp: không thể chuyển đổi từ Object thành] thành chuỗi [] ', vì vậy tôi tạo dòng thành' String [] xCoords = (String []) xCoordsList.toArray(); 'nhưng cái này sau đó hiển thị một số '08-04 11: 54: 24.462: ERROR/AndroidRuntime (1173): Gây ra bởi: java.lang.ClassCastException: [Ljava.lang.Object;' error. –

+0

xin lỗi Tôi đã chỉnh sửa câu trả lời .. chỉ cần thêm Chuỗi truyền vào câu lệnh cuối cùng' (Chuỗi []) ' –

+0

Đây là điểm của tôi - ngay cả với phiên bản đã chỉnh sửa mà ứng dụng dừng lại (bạn phải Buộc đóng nó) và LogCat hiển thị 'java.lang.ClassCastException: [Ljava.lang.Object;' 'Gây ra bởi: java.lang.ClassCastException: [Ljava.lang.Object;' –

6

Hãy thử như thế này

String stringArray[];   
stringArray=new String[jArray.length()]; 
String xCoords[]=new String[jArray.length()];; 

     for (int i=0; i<jArray.length(); i++) { 
      JSONObject json_data = jArray.getJSONObject(i); 
      xCoords[i] = json_data.getString("xCoord"); 
     } 
+0

này hoạt động khi chèn nhưng khi tôi cố gắng để trích xuất các dữ liệu từ nó với 'for (int i = 0; i

+0

kiểm tra giá trị tại xCoords [i]. Viết nhật ký để xem giá trị. Có vấn đề gì về độ dài hay chỉ vì xCoords [i] không phải là giá trị gấp đôi? – Rasel

+0

Vấn đề là với độ dài - nếu tôi thay đổi các tham số của 'for {}' thành 'cho (int i = 0; i <10; i ++)' thì lỗi sẽ chuyển sang dòng kế tiếp - 'double xCoord = Double. parseDouble (xCoords [i]); ' –

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