2011-07-13 38 views
0

我對編程相當陌生,而且我是一名實習生,致力於開發黑莓應用程序。所以,如果我使用任何錯誤的術語,我會提前道歉。JSON數組解析和轉換爲Java類型

我爲特定用戶的所有朋友製作HTTP請求,並以此JSON數組格式獲得JSON響應。

{ 「用戶」:[{ 「用戶名」: 「jonbob」, 「FIRST_NAME」: 「喬恩」, 「姓氏」: 「鮑勃」, 「手機」: 「5555555555」, 「FULL_NAME」:「 Jon Bob「,」id「:1},{」username「:」joesmith「,」first_name「:」Joe「,」last_name「:」Smith「,」phone「:」5555555555「,」full_name「:」Joe史密斯」, 「ID」:2}]}

我使用org.json解析庫。我正在嘗試創建一個包含所有用戶的朋友(如地址簿)的黑莓列表。但我不確定如何使用此org.json庫訪問JSON數組。我想創建一個只有所有朋友的全名的Java數組。你將如何去解析這個迴應來完成?

感謝

+0

顯示您嘗試過的。解釋您遇到問題的代碼的具體部分。解釋你認爲它會做什麼。請解釋它看起來是什麼。 –

回答

-1

你可以看看GSON這個庫是強大的JSON和Java操作。

List<Users> users= gson.fromJson(json, new TypeToken<List<Users>>(){}.getType()); 

這裏是API文檔。 http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html

+0

這不會像建議的那樣工作,因爲輸入的JSON數據結構與建議的目標Java結構不匹配。 JSON對象!= Java列表。 –

1
import java.util.Arrays; 

import org.json.JSONArray; 
import org.json.JSONObject; 

public class Foo 
{ 
    public static void main(String[] args) throws Exception 
    { 
    /* 
{ 
    "users": [ 
     { 
      "username": "jonbob", 
      "first_name": "Jon", 
      "last_name": "Bob", 
      "phone": "5555555555", 
      "full_name": "Jon Bob", 
      "id": 1 
     }, 
     { 
      "username": "joesmith", 
      "first_name": "Joe", 
      "last_name": "Smith", 
      "phone": "5555555555", 
      "full_name": "Joe Smith", 
      "id": 2 
     } 
    ] 
} 
    */ 
    String json = "{\"users\": [{\"username\": \"jonbob\", \"first_name\": \"Jon\", \"last_name\": \"Bob\", \"phone\": \"5555555555\", \"full_name\": \"Jon Bob\", \"id\": 1}, {\"username\": \"joesmith\", \"first_name\": \"Joe\", \"last_name\": \"Smith\", \"phone\": \"5555555555\", \"full_name\": \"Joe Smith\", \"id\": 2}]}"; 

    JSONObject result = new JSONObject(json); 
    JSONArray users = result.getJSONArray("users"); 
    int size = users.length(); 
    Friend[] friends = new Friend[size]; 
    for (int i = 0; i < size; i++) 
    { 
     JSONObject user = users.getJSONObject(i); 
     friends[i] = new Friend(user.getString("first_name"), user.getString("last_name")); 
    } 

    System.out.println(Arrays.toString(friends)); 
    // output: [Jon Bob, Joe Smith] 
    } 
} 

class Friend 
{ 
    String firstName; 
    String lastName; 

    Friend (String f, String l) {firstName = f; lastName = l;} 

    @Override 
    public String toString() {return String.format("%s %s", firstName, lastName);} 
}