Извините, но я новичок в программировании для Android, так что это может показаться очень глупым вопросом.
Я установил соединение со своими данными JSON, но мне нужно выбрать только те данные, которые мне нужны, а не все ненужные данные.Мой Json выглядит так:
data ": [{" id ": 1," температура ":" 21.375 "," влажность ":" 28 "}
Здесь мне нужен только идентификатор: 1, температура: 21,375 и влажность: 28
, чтобы установить соединение, у меня есть следующий метод:
private class jsonConnection extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
String username = "websiteUsername";
String password = "websitePassword";
String credentials = username + ":" + password;
String sensorID = "1";
String api = "api";
String websiteURL = "https://" + credentials + "@website.com" + "/" + sensorID + "/" + api;
String credBase64 = Base64.encodeToString( credentials.getBytes(), Base64.DEFAULT ).replace( "\n", "" );
try {
URL url = new URL( websiteURL );
System.out.println( url );
System.out.println( credentials );
System.out.println( websiteURL );
connection = (HttpsURLConnection) url.openConnection();
String basicAuth = "Basic " + new String( encodeBase64URLSafeString( credentials.getBytes() ) );
connection.setRequestProperty( "Authorization", basicAuth );
connection.setRequestMethod( "GET" );
connection.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded" );
connection.setRequestProperty( "Content-Language", "en-US" );
connection.setUseCaches( false );
connection.setDoInput( true );
connection.setDoOutput( true );
connection.connect();
InputStream stream = connection.getInputStream();
bufferedReader = new BufferedReader( new InputStreamReader( stream ) );
//StringBuffer buffer = new StringBuffer();
String line = "";
while (line != null) {
line = bufferedReader.readLine();
data = data + line;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
pd = new ProgressDialog( MainActivity.this );
pd.setMessage( "Please wait" );
pd.setCancelable( false );
pd.show();
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute( result );
if (pd.isShowing()) {
pd.dismiss();
}
ScrollingMovementMethod());
System.out.println( data );
json_string = data;
System.out.println( "json_string: " + json_string );
}
}
я представляю, что должен сделать что-то подобное, ноя не уверен, как продолжить.
try {
JSONObject parentObject = new JSONObject( data );
JSONArray parentArray = parentObject.getJSONArray( "data" );
JSONObject finalObject = parentArray.getJSONObject( 0 );
int idName = finalObject.getInt( "id" );
int tempName = finalObject.getInt( "temperature" );
int humName = finalObject.getInt( "humidity" );
String batName = finalObject.getString( "battery" );
String modeName = finalObject.getString( "mode" );
String dateName = finalObject.getString( "date_time" );
String timeName = finalObject.getString( "date_time" );
String luxName = finalObject.getString( "lux" );
System.out.println( idName + tempName + humName + batName + modeName + dateName + timeName + luxName );
} catch (JSONException e) {
e.printStackTrace();
}
У меня есть подозрение, что это должны быть не данные внутри параметра, а, возможно, что-то еще, и, возможно, это исправит это?
JSONObject parentObject = new JSONObject( data );