如何将JSON转换为JAVA对象?

时间:2015-12-07 05:49:18

标签: java android json

我在以下link

中有一个JSON

我正在尝试将其转换为JAVA对象,但我无法加载IMAGE。

这是我的代码

  public class MainActivity extends ActionBarActivity {
    // Declare Variables
    JSONObject jsonobject;
    JSONArray jsonarray;
    ListView listview;
    ListViewAdapter adapter;
    ProgressDialog mProgressDialog;
    ArrayList<HashMap<String, String>> arraylist;
    static String url = "https://www.googleapis.com/youtube/v3/search?part=snippet&maxResult=30&q=natok+bangla+mosharrof+karim&key=AIzaSyCR40QlsuX0aFfBV-wEPDsH_jxna1tDFRA";

    static String VIDEO_ID = "videoId";
    static String TITLE = "title";
    //static String DESCRIPTION = "description";
    static String THUMBNAILS = "http://img.youtube.com/vi/\" + videoId + \"/hqdefault.jpg\"";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get the view from listview_main.xml
        setContentView(R.layout.listview_main);
        // Execute DownloadJSON AsyncTask
        new DownloadJSON().execute();
    }

    // DownloadJSON AsyncTask
    private class DownloadJSON extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Create a progressdialog
            mProgressDialog = new ProgressDialog(MainActivity.this);
            // Set progressdialog title
            mProgressDialog.setTitle("Your Youtube Video is");
            // Set progressdialog message
            mProgressDialog.setMessage("Loading...");
            mProgressDialog.setIndeterminate(false);
            // Show progressdialog
            mProgressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            // Create an array
            arraylist = new ArrayList<HashMap<String, String>>();

            // Retrieve JSON Objects from the given URL address

            String query = "bangla natok 2015";
            query = query.replace(" ", "+");
            try {
                query = URLEncoder.encode(query, "utf-8");
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                //e.printStackTrace();
            }

            jsonobject = JSONfunctions.getJSONfromURL("https://www.googleapis.com/youtube/v3/search?part=id%2Csnippet&q=natok+2015&maxResults=50&key=AIzaSyCR40QlsuX0aFfBV-wEPDsH_jxna1tDFRA");

            try {
                // Locate the array name in JSON
                JSONArray jsonarray = jsonobject.getJSONArray("items");

                for (int i = 0; i < jsonarray.length(); i++) {
                    HashMap<String, String> map = new HashMap<String, String>();
                    jsonobject = jsonarray.getJSONObject(i);
                    // Retrive JSON Objects
                    JSONObject jsonObjId = jsonobject.getJSONObject("id");
                    map.put("videoId", jsonObjId.getString("videoId"));
                    map.put ("img","http://img.youtube.com/vi/" + VIDEO_ID + "/hqdefault.jpg");

                    JSONObject jsonObjSnippet = jsonobject.getJSONObject("snippet");
                    map.put("title", jsonObjSnippet.getString("title"));

                    //map.put("description", jsonObjSnippet.getString("description"));
                    // map.put("flag", jsonobject.getString("flag"));




                    // Set the JSON Objects into the array
                    arraylist.add(map);
                }
            } catch (JSONException e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void args) {
            // Locate the listview in listview_main.xml
            listview = (ListView) findViewById(R.id.listview);
            // Pass the results into ListViewAdapter.java
            adapter = new ListViewAdapter(MainActivity.this, arraylist);
            // Set the adapter to the ListView
            listview.setAdapter(adapter);
            // Close the progressdialog
            mProgressDialog.dismiss();
        }
    }

我需要的所有东西都可以在这里展示,但我无法在这里展示图像。我无法找到&amp;得到任何类型的错误。将JSON转换为java对象有什么问题吗?

1 个答案:

答案 0 :(得分:2)

在这种情况下使用GSON会更好,它会将你的json字符串转换为java对象而不需要手动工作。

将以下行添加到gradle依赖项

compile 'com.google.code.gson:gson:1.7.2'

现在使用此代码将json字符串转换为java对象

POJOClass obj = gson.fromJson(json, POJOClass.class)

此外,您可以使用此站点将您的json转换为POJO类而无需手动创建

http://www.jsonschema2pojo.org/

如有问题,请告诉我