我可以用這種方式從url解析json,我的json看起來像這樣;Android從url解析json
[
{"rank":1,"title":"The Shawshank Redemption"},
{"rank":2,"title":"The Godfather"},
{"rank":3,"title":"The Godfather: Part II"},
{"rank":4,"title":"The Dark Knight"}
]
這是我的android代碼,它的工作原理非常完美;
public class MainActivity extends AppCompatActivity {
private ListView listView;
private SwipeListAdapter adapter;
private List<Movie> movieList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
movieList = new ArrayList<>();
adapter = new SwipeListAdapter(this, movieList);
listView.setAdapter(adapter);
runOnUiThread(new Runnable() {
@Override
public void run() {
fetchMovies();
};
});
}
private void fetchMovies() {
String url = "http://www.url.com/test.json";
JsonArrayRequest req = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
if (response.length() > 0) {
for (int i = 0; i < response.length(); i++) {
try {
JSONObject movieObj = response.getJSONObject(i);
int rank = movieObj.getInt("rank");
String title = movieObj.getString("title");
Movie m = new Movie(rank, title);
movieList.add(0, m);
} catch (JSONException e) {
}
}
adapter.notifyDataSetChanged();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
}
});
MyApplication.getInstance().addToRequestQueue(req);
}
}
我想解析這個JSON,但我無法解析這個JSON,我不知道。
{
"level":[
{
"server":[
{"rank":1,"title":"The Shawshank Redemption"},
{"rank":2,"title":"The Godfather"},
{"rank":3,"title":"The Godfather: Part II"},
{"rank":4,"title":"The Dark Knight"}
]
}
]
}
我該怎麼做?
謝謝。
使用getJSONArray的級別和服務器...從頂部對象支架總是開始...不要太困難或不同於你有什麼,但你需要一個JSON **對象**請求 –
嗨@ cricket_007你能幫我嗎?我做不到。 – Johny