java - 如何在获取整个JSON数据源的同时获取某个标签

标签 java android json

我想在 JSON 文件中记录一些标签的值。 这是我的数据源:http://data.nba.net/10s/prod/v1/2016/players.json

我设法使用此处找到的代码获取了整个数据流:Get JSON Data from URL Using Android?我发布它是为了让您更容易检查我的代码:

    Button btnHit;
TextView txtJson;
ProgressDialog pd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btnHit = (Button) findViewById(R.id.btnHit);
    txtJson = (TextView) findViewById(R.id.tvJsonItem);

    btnHit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new JsonTask().execute("http://data.nba.net/10s/prod/v1/2016/players.json");
        }
    });


}


private class JsonTask extends AsyncTask<String, String, String> {

    protected void onPreExecute() {
        super.onPreExecute();

        pd = new ProgressDialog(MainActivity.this);
        pd.setMessage("Please wait");
        pd.setCancelable(false);
        pd.show();
    }

    protected String doInBackground(String... params) {


        HttpURLConnection connection = null;
        BufferedReader reader = null;

        try {
            URL url = new URL(params[0]);
            connection = (HttpURLConnection) url.openConnection();
            connection.connect();


            InputStream stream = connection.getInputStream();

            reader = new BufferedReader(new InputStreamReader(stream));

            StringBuffer buffer = new StringBuffer();
            String line = "";

            while ((line = reader.readLine()) != null) {
                buffer.append(line+"\n");
                Log.d("Response: ", "> " + line);   //here u ll get whole response...... :-)

            }

            return buffer.toString();


        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
            try {
                if (reader != null) {
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        if (pd.isShowing()){
            pd.dismiss();
        }
        txtJson.setText(result);

    }
}
}

我的问题是我无法从我选择的源中获取单个标签。例如,我如何获取该流中每个玩家的名字和姓氏并将其记录下来?

感谢您的时间和考虑。

最佳答案

首先,我建议您使用任何适用于 android 的 http 库(okHttp、volley..)

但是如果你仍然想使用你实现它的方式,你需要在这里做一些改变:

while ((line = reader.readLine()) != null) {
            buffer.append(line);
            Log.d("Response: ", "> " + line);   //here u ll get whole response...... :-)

        }

        String json = buffer.toString();
try {
  String json = "";
  JSONObject jsonObject = new JSONObject(json);
  JSONObject league = jsonObject.getJSONObject("league");
  JSONArray standard = league.getJSONArray("standard");
  for (int i = 0;i<standard.length();i++){
    JSONObject item = standard.getJSONObject(i);
    String name = item.getString("firstName");
    String lastName= item.getString("lastName");
  }
} catch (JSONException e) {
  e.printStackTrace();
}

关于java - 如何在获取整个JSON数据源的同时获取某个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54420813/

相关文章:

macos - 无法在 Mac OS 10.7 上安装 netbeans

android - Android ICS 上的卡纳达语字体

json - 通过 Go 在 Protocol Buffers v3 的 oneOf 字段中使用结构

java - 将 vb.net web 请求转换为 java HttpwebRequest

javascript - 在php中编码javascript数组?

java - 字符串到映射转换java

java - 似乎无法访问我的数组值,即使它正在工作

java - SQLite 数据库中的奇怪编码 : How to retrieve string values with JDBC?

git - 我如何通过 git 与其他拥有 Android 存储库的人共享代码?

android - 从连接的手机记录蓝牙