2015-07-14 5 views
0

Это мои данные JSON(Android) Как получить данные из JSON, чтобы показать на ListView

{ 
    "success": "1", 
    "results": [ 
     { 
      "type": "1.popmusic", 
      "posts": [ 
       { 
        "music": "1.AAA" 
       }, 
       { 
        "music": "2.BBB" 
       } 
      ] 
     } 
    ] 
} 

мне нужно нажать какую-то музыку, такие как я нажимаю «popmusic» на моем ListView, а затем, Intent к новой деятельности, чтобы показать музыку в поп-музыке, From my json. Он должен показать «1.AAA» и «2.BBB» в списке.

Я не могу получить «сообщения» от моего json. Как я могу его получить.

Это Blog1 Class

public class Blog1 { 
    String success; 
    List<Post> results; 
    public List<Post> getResults() { 
     return results; 
    } 

} 

Это Post1 class

public class Post1 { 
String name; 
public String getName() { 
    return name; 
} 

public String getAuthor() { 
    return author; 
} 

// Getter and Setter 

Это main class

private void showData(String jsonString) { 
     Gson gson = new Gson(); 
     Blog1 blog = gson.fromJson(jsonString, Blog1.class); 
     List<Post> results = blog.getResults(); 

     mAdapter = new CustomAdapter1(this, results); 
     mListView.setAdapter(mAdapter); 


} 
+0

Можете ли вы опубликовать класс, используемый для извлечения/хранения данных JSON? –

ответ

0

Вы можете использовать в сборке андроида библиотеку JSON

См How to get json array values in android?

См android get json array nested in array

Сначала вам нужно получить результаты

JSONArray json2 = json.getJSONArray("results"); 

Затем цикл внутри (я предполагаю, что 0 для первого элемента)

JSONObject json3 = json2.getJSONObject(0); 

Затем вам нужно получить посты

JSONArray json4 = json3.getJSONArray("posts"); 

Затем вы можете получить петлю внутри json4

--- EDIT ---

Я вижу, что вы используете Gson но ваша структура класса должна быть

public class Blog { 
    String success; 
    List<Result> results; 
    public List<Result> getResults() { 
     return results; 
    } 
} 

public class Result { 
    String type; 
    public String getType() { 
     return type; 
    } 
    List<Post> posts; 
    public List<Post> getPosts() { 
     return posts; 
    } 
} 

public class Post { 
    String music; 
    public String getMusic() { 
     return music; 
    } 
} 

В вашей основной код

Blog blog = gson.fromJson(jsonString, Blog.class); 
//I am assuming 0th item for both 
blog.getResults().get(0).getPosts().get(0).getMusic(); 

Если вы строите пользовательский адаптер, то, предполагая, что вы собираетесь показывать все сообщения для одной записи в блоге, то вы можете получить все сообщения, как

List<Post> posts = blog.getResults().get(0).getPosts() 

и передать Сообщений к пользовательскому адаптера.

Если у вас есть два адаптера затем blog.getResults() для первого адаптера затем щелкнув по пункту этого адаптера results.get (ItemIndex).getPosts() для второго адаптера

+0

Как использовать функцию getPosts() для функции main? – Adiruj

+0

Я добавил основной код. Это массив объектов, который содержит массив объектов, к которым следует обращаться с помощью индекса индекса –

+0

. Я думаю, что он полезен, но я не знаю, какой тип переменной использовать для него, например List results = blog.getResults(). get (0) .getPosts(). get (0) .getName(); можете ли вы предложить мне это. Потому что мне нужно отправить на заказ. – Adiruj

0

Ваш JSON

{ 
    "success": "1", 
    "results": [ 
     { 
      "type": "1.popmusic", 
      "posts": [ 
       { 
        "music": "1.AAA" 
       }, 
       { 
        "music": "2.BBB" 
       } 
      ] 
     } 
    ] 
} 

фактически отображается на

public class Response { 
    private String success; 
    private List<Result> results; 

    //getter, setter 
} 

public class Result { 
    private String type; 
    private List<Post> posts; 

    //getter, setter 
} 

public class Post { 
    private String music; 

    //getter, setter 
} 

Затем вы можете сделать GSON получить Result из него.

Смежные вопросы