如何从没有数组名称的android中的json中获取数据?

Posted

技术标签:

【中文标题】如何从没有数组名称的android中的json中获取数据?【英文标题】:How to fetch data from json in android which does not have array name? 【发布时间】:2014-06-05 09:46:30 【问题描述】:

我想从此链接获取一个网址:

 "http://graph.facebook.com/10202459285618351/picture?type=large&redirect=false"

它给出了结果:

“数据”: "url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-xap1/t1.0-1/s200x200/10342822_10202261537234765_3194866551853134720_n.jpg", “is_silhouette”:假

我试过了,

private class GetContacts extends AsyncTask<Void, Void, Void> 

    @Override
    protected void onPreExecute() 
        super.onPreExecute();
        // Showing progress dialog
        pDialog = new ProgressDialog(AccountActivity.this);
        pDialog.setMessage("Please wait...");
        pDialog.setCancelable(false);
        pDialog.show();

    

    @Override
    protected Void doInBackground(Void... arg0) 
        // Creating service handler class instance
        ServiceHandler sh = new ServiceHandler();

        String jsonStr = sh.makeServiceCall(fbPicURL, ServiceHandler.GET);

        Log.d("Response: ", "> " + jsonStr);

        if (jsonStr != null) 
            try 
                JSONObject jsonObj = new JSONObject(jsonStr);

                // Getting JSON Array node
                fbRealURL = jsonObj.getString("url");


                    // Phone node is JSON Object
                    Toast.makeText(AccountActivity.this, fbRealURL,
                            Toast.LENGTH_LONG).show();
                    // tmp hashmap for single contact

                
             catch (JSONException e) 
                e.printStackTrace();
            
         else 
            Log.e("ServiceHandler", "Couldn't get any data from the url");
        

        return null;
    

    @Override
    protected void onPostExecute(Void result) 
        super.onPostExecute(result);
        // Dismiss the progress dialog
        if (pDialog.isShowing())
            pDialog.dismiss();
        /**
         * Updating parsed JSON data into ListView
         * */
        Toast.makeText(AccountActivity.this, fbRealURL,
                Toast.LENGTH_LONG).show();
    


但是返回 null 并且它不会崩溃..

【问题讨论】:

【参考方案1】:

你必须先像这样获取数据对象:

     try 
            JSONObject jsonObj = new JSONObject(jsonStr);


            fbRealURLObj = jsonObj.getJSONObject("data");

            fbRealURL = fbRealURLObj.getString("url");

                // Phone node is JSON Object
                Toast.makeText(AccountActivity.this, fbRealURL,
                        Toast.LENGTH_LONG).show();
                // tmp hashmap for single contact

            

【讨论】:

仍然没有价值 您在 logcat 中是否有任何错误?在此处发布您的 logcat 错误。 它给了我:来自 nativeGetEnabledTags 的意外值:0 你能发布完整的代码吗,如果可以的话.. 意思是一路用 asynctask 上课,用你自己的代码? 你的 asynctask 看起来不错.. 我也会这样做......你能发布完整的 logcat 输出吗

以上是关于如何从没有数组名称的android中的json中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

从没有异步任务的 JSON android 加载位图

如何从没有“每个”块的 Mongoid::Criteria 获取结果数组

如何在 kotlin Android 中访问更大的 jsonArray json 中的 json 数组中的字符串

如何从android中的php关联数组解析JSON响应?

如何从android中的URL获取json数组而不是html

如何使用 AND 查询 MYSQL 中的 JSON 数组