2010-02-12 39 views
36
public static void parseProfilesJson(String the_json){ 
     try { 
      JSONObject myjson = new JSONObject(the_json); 

      JSONArray nameArray = myjson.names(); 
      JSONArray valArray = myjson.toJSONArray(nameArray); 
      for(int i=0;i<valArray.length();i++) 
      { 
       String p = nameArray.getString(i) + "," + ValArray.getString(i); 
       Log.i("p",p); 
      }  

     } catch (JSONException e) { 
       e.printStackTrace(); 
     } 
    } 

Như bạn có thể thấy, mẫu mã này sẽ in ra KEY của JSONs, tiếp theo là GIÁ TRỊ của JSONS.Làm cách nào để phân tích cú pháp JSON và biến các giá trị của nó thành một mảng?

Nó sẽ in cấu hình, john nếu json là như thế này:

{'profiles':'john'} 

Đó là mát mẻ. Đó là tốt, vì tôi có thể làm việc với các biến đó. Tuy nhiên, nếu JSON giống như thế này:

{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]} 

Trong trường hợp này, toàn bộ giá trị sẽ là mảng. Về cơ bản, tôi chỉ muốn lấy mảng đó (đó là "giá trị" trong trường hợp này) ... và biến nó thành một mảng thực tế mà JAVA có thể sử dụng. Làm thế nào tôi có thể làm điều đó? Cảm ơn.

+1

Lưu ý rằng điều này sẽ không vượt qua trình phân tích cú pháp chặt chẽ hơn. JSON yêu cầu dấu ngoặc kép xung quanh tên và chuỗi (trích dẫn một lần không hợp lệ). –

+0

Đừng lo lắng về Jonathon ... JSONObject là một mã JSON.org được cung cấp để phân tích cú pháp JSON trong java. Những gì alex đặt chỉ là ví dụ .... –

+0

Tôi đã cho bạn một điểm để cung cấp mã đơn giản cho tôi để phân tích chuỗi json của tôi. – crafter

Trả lời

56

ví dụ của bạn:

{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]} 

bạn sẽ phải làm một cái gì đó của hiệu ứng này:

JSONObject myjson = new JSONObject(the_json); 
JSONArray the_json_array = myjson.getJSONArray("profiles"); 

này trả về đối tượng mảng.

Sau đó iterating sẽ như sau:

int size = the_json_array.length(); 
    ArrayList<JSONObject> arrays = new ArrayList<JSONObject>(); 
    for (int i = 0; i < size; i++) { 
     JSONObject another_json_object = the_json_array.getJSONObject(i); 
      //Blah blah blah... 
      arrays.add(another_json_object); 
    } 

//Finally 
JSONObject[] jsons = new JSONObject[arrays.size()]; 
arrays.toArray(jsons); 

//The end... 

Bạn sẽ phải xác định xem dữ liệu là một mảng (chỉ cần kiểm tra xem charAt(0) bắt đầu với [ ký tự).

Hy vọng điều này sẽ hữu ích.

0

Bạn có thể thích phân tích cú pháp nhanh json để đáp ứng yêu cầu của bạn ...

nhanh json phân tích cú pháp là rất thẳng về phía trước, linh hoạt, rất nhanh và tùy biến.Hãy thử điều này ra

[phân tích cú pháp nhanh json] (https://code.google.com/p/quick-json/) - tính năng nhanh json -

  • Tương thích với JSON đặc điểm kỹ thuật (RFC4627)

  • High-Performance JSON parser

  • Hỗ trợ phương pháp phân tích cú pháp linh hoạt/có thể định cấu hình

  • xác nhận cấu hình của cặp khóa/giá trị của bất kỳ JSON hệ thống cấp bậc

  • Dễ sử dụng # in chân Rất Ít

  • Tăng phát triển thân thiện và dễ dàng để theo dõi ngoại lệ

  • Pluggable Tuỳ chỉnh Validation hỗ trợ - Chìa khóa/giá trị có thể được xác thực bằng cách định cấu hình trình xác thực tùy chỉnh và khi gặp phải

  • hỗ trợ trình phân tích cú pháp xác thực và không hợp lệ

  • Hỗ trợ cho hai loại cấu hình (JSON/XML) để sử dụng nhanh json xác nhận phân tích cú pháp

  • Yêu cầu JDK 1.5 # Không phụ thuộc vào thư viện bên ngoài

  • Hỗ trợ cho Json thế hệ thông qua đối tượng serialization

  • Hỗ trợ chọn loại bộ sưu tập trong quá trình phân tích cú pháp

Ví dụ:

JsonParserFactory factory=JsonParserFactory.getInstance(); 
JSONParser parser=factory.newJsonParser(); 
Map jsonMap=parser.parseJson(jsonString); 
Các vấn đề liên quan