JSON数组解析和转换为Java类型

时间:2011-07-13 19:55:56

标签: json org.json arrays

我对编程很新,而且我是一名实习开发Blackberry App的实习生。所以,如果我使用任何错误的术语,我会提前道歉。

我为特定用户的所有朋友发出HTTP请求,并以此JSON数组格式获取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}]}

我正在使用 org.json 解析库。我正在尝试创建一个包含所有用户朋友的Blackberry列表(如地址簿)。但我不确定如何使用此org.json库访问JSON数组。我想创建一个只包含所有朋友的full_names的Java数组。您将如何解析此响应以实现该目标?

谢谢

2 个答案:

答案 0 :(得分: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);}
}

答案 1 :(得分:-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