2011-07-13 36 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);} 
}