当前位置: 首页 > 知识库问答 >
问题:

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

龚盛
2023-03-14

我想从这个链接获取一个url:

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

它给出结果:

{ " data ":{ " URL ":" https://FBC dn-profile-a . akamaihd . net/hprofile-AK-xa P1/t 1.0-1/s200x 200/10342822 _ 10202261537234765 _ 3194866551853134720 _ n . jpg "," is_silhouette": false } }

我试过了,

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个答案

汪德寿
2023-03-14

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

     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

            }
 类似资料:
  • 问题内容: 我有一个Json Array作为没有名称的字符串,我想解析它如何在android中进行? 我的JsonArray是: 问题答案: 试试这个..

  • 问题内容: 我有这个数组: 是否可以通过知道名称来获取值或特定元素? 像这样的东西: 要么 问题答案: 通常通过数字索引访问数组,因此在您的示例中。如果您知道每个对象的属性都是唯一的,则可以将它们存储在对象而不是数组中,如下所示: 如果您实际上想要一个像您的帖子中那样的对象数组,则可以遍历该数组并在找到具有对象具有所需属性的元素时返回:

  • 问题内容: 我是JSON的新手,请尝试使用本教程:http : //p-xr.com/android-tutorial- how-to-parse-read-json-data-into-a-android- listview/#comments 我是JSON,C语言,Java和Android的新手,但我正在学习。本教程使用的是我所说的命名数组,但是我将在我的android项目中使用的所有JSON

  • 问题内容: 我在解析json响应时遇到一个小问题,因为每当我发送请求时,它都会不断更新,我看到的所有示例都使我们提供了标签名。我的问题是我试图解析通过API发送的请求中的数据,并且我想在开始解析之前列出JSON对象内存在的所有JSON数组的所有标签。是否有可能在Android中。http://api.yamgo.tv/channel?apiKey=187abeefc53f900600dc0fc5b

  • 问题内容: 如标题中所指定,我想在sqlserver中获取数据库名称,我所知道的所有信息都是数据源名称,用于获取Connection对象的登录名/密码,请在Java中显示一些有关如何正确检索数据库名称的指针,谢谢! 甚至 问题答案: 从连接对象获取一个实例。 数据库名称可以通过或方法获得(取决于JDBC驱动程序的供应商)。 或使用或方法。 如果您有兴趣获得Oracle数据库服务器或Oracle数据

  • 我有一些数组,如果它们包含类似的值,我想返回这些数组的名称。 我有我的变量,它有多个数组,名字要么是,要么是,要么是。包含的只是变量中某些数组中相同的值。我需要返回数组中包含、和的数组的名称。因此,对于这个示例,我需要返回:。 通过这个函数抛出它们时,我得到一个错误。如何获取返回的数组?