Java json解析问题

Java json解析问题,java,android,arrays,json,Java,Android,Arrays,Json,我试图解析从lastfm返回的json数据。 我感兴趣的方法是album.search 文档要求有相册名称的搜索词和api键,我在这里已经完成了: String api_key = "x"; String url = "http://ws.audioscrobbler.com/2.0/?method=album.search" + "&album=" + query + "&apikey=" + api_key + "&f

我试图解析从lastfm返回的json数据。 我感兴趣的方法是album.search 文档要求有相册名称的搜索词和api键,我在这里已经完成了:

String api_key = "x";
    String url = "http://ws.audioscrobbler.com/2.0/?method=album.search" + 
    "&album="
    + query
    + "&apikey="
    + api_key
    + "&format=json";
然后,我的问题是尝试遍历json数据,这样我就可以得到我想要的值,在我的例子中是name,所以我创建了一个数组来循环遍历json文件

boolean error = false;
    HttpClient httpclient = null;
    try {
        httpclient = new DefaultHttpClient();
        HttpResponse data = httpclient.execute(new HttpGet(url));
        HttpEntity entity = data.getEntity();
        String result = EntityUtils.toString(entity, "UTF8");

        for ( int i = 0; i < results.length(); i++) {
        JSONObject row = new JSONObject(result);

        albummatches = row.getString("albummatches");
        album = row.getString("album");
        name = row.getString("name");
        results.getJSONObject(i).get("album");
现在在我的另一个类中,我试图通过此方法将相册的名称附加到适配器列表视图

public void ServiceComplete(AbstractService service) {
    if (!service.hasError()) {
        AlbumSearchService albumService = (AlbumSearchService)service;
        String[] result = new String[albumService.getResults().length()];

        for (int i = 0; i < albumService.getResults().length(); i++) {
            try{
                result[i] = albumService.getResults().getJSONObject(i).getString("name");

            } catch (JSONException ex) {
                result[i] = "Error";
            }
        }

        setListAdapter(new ArrayAdapter<String>(this, R.layout.album_list_cell, R.id.text, result));
    }
公共void服务完成(抽象服务){
如果(!service.hasError()){
AlbumSearchService albumService=(AlbumSearchService)服务;
字符串[]结果=新字符串[albumService.getResults().length()];
对于(int i=0;i
但不幸的是,当我尝试运行应用程序并搜索相册时,它只是停留在“搜索…”状态,不会在我的列表视图中显示任何结果


我不知道我哪里出错了:(帮助某人!

你确定你从http请求中获得了JSON字符串吗?如果没有,请尝试检查实体的内容(
result
),以查看您是否实际获得了所需的内容。在第二个代码段中,您迭代了一个变量
results
,但在前一行,您将响应存储在
字符串result
中。什么是
results
?它是数组还是键入错误,应该是
result
?如果
results
String
,为什么要迭代
字符串。length
?结果是jsonarray,结果是json字符串。抱歉,但这段代码很混乱。你迭代一个数组,你想用一个你称之为“行”的东西填充它,它(在最好的情况下)是一个json字符串(在每次迭代中都是相同的)。行
结果。getJSONObject(i).get(“album”);
对我来说毫无意义。使用调试器,逐行检查代码。检查变量的内容,你肯定会找到应用程序挂起的那一行(除了一些惊喜)。
public void ServiceComplete(AbstractService service) {
    if (!service.hasError()) {
        AlbumSearchService albumService = (AlbumSearchService)service;
        String[] result = new String[albumService.getResults().length()];

        for (int i = 0; i < albumService.getResults().length(); i++) {
            try{
                result[i] = albumService.getResults().getJSONObject(i).getString("name");

            } catch (JSONException ex) {
                result[i] = "Error";
            }
        }

        setListAdapter(new ArrayAdapter<String>(this, R.layout.album_list_cell, R.id.text, result));
    }