Json file data parsing from URL in Android Studio
Wrong:
JSONObject jsonObject = new JSONObject(result);
String DataPlayers = jsonObject.getString("standard");
Correct:
JSONObject jsonObject = new JSONObject(result);
JsonObject objStandard = jsonObject.getJSONObject("league");
Now from objStandard object, you can retrieve the json array and iterate through the sub json objects.
JSONArray jsonArray = objStandard.getJSONArray("standard");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject JO = jsonArray.getJSONObject(i);
Players[i] = JO.getString("firstName");
txtJson.append(Players[i] + "\n");
}
2 cents suggestion :)
It seems you have just started exploring android development, saying based on you are using a legacy method of json parsing, I would suggest you to check out GSON library, which is a Java serialization/deserialization library to convert Java Objects into JSON and back. In short, you will not be needed to parse JSON response manually but rather you will be having normal java class objects and members/methods to deal with.
How to get JSON data from url?
EDIT
Use Volley if httpclient you can't find.
Moreover parsing script is same which mentioned below.
I already written a Blog. Refer that. Hope it helps. Let me clone my blog to match your requirement. Please use proper naming for that. Here is parsing output.
public class GridUI extends Activity {
ArrayList<Persons> personsList;
GridView gridView;
GridAdapter gridAdapter;
private static final String url="http://www.zippytrailers.com/funlearn/topicsMap";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridview);
personsList= new ArrayList<Persons>();
new JSONAsyncTask().execute(url);
gridView=(GridView)findViewById(R.id.gridview);
gridAdapter = new GridAdapter(this, R.layout.gridview_row, personsList);
gridView.setAdapter(gridAdapter);
}
class JSONAsyncTask extends AsyncTask<String, Void, Boolean> {
ProgressDialog dialog;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog=new ProgressDialog(GridUI.this);
dialog.setMessage("Loading, please wait");
dialog.setTitle("Connecting server");
dialog.show();
dialog.setCancelable(false);
}
@Override
protected Boolean doInBackground(String... urls) {
try {
//------------------>>
HttpGet httppost = new HttpGet(urls[0]);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
// StatusLine stat = response.getStatusLine();
int status = response.getStatusLine().getStatusCode();
if(status==200){
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
JSONObject jsono=new JSONObject(data);
JSONArray jarray = jsono.getJSONArray("results");
for (int i = 0; i < jarray.length(); i++) {
JSONObject object = jarray.getJSONObject(i);
Persons name = new Persons();
name.setName(object.getString("syllabus"));
name.setDescription(object.getString("grade"));
name.setDob(object.getString("subject"));
name.setCountry(object.getString("topic"));
name.setHeight(object.getString("id"));
personsList.add(name);
}
return true;
}
} catch (ParseException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
dialog.cancel();
gridAdapter.notifyDataSetChanged();
if(result == false)
Toast.makeText(getApplicationContext(), "Unable to fetch data from server", Toast.LENGTH_LONG).show();
}
}
Get JSON object from URL using HTTPURLConnection on android
i recommand to read this url
https://stackoverflow.com/a/6343299/2530660
add AsyncTask;
public class TestAsyncTask extends AsyncTask<Void, Void, String> {
private Context mContext;
private String mUrl;
public TestAsyncTask(Context context, String url) {
mContext = context;
mUrl = url;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
dynamictext = (TextView) findViewById(R.id.dynamictext);
}
@Override
protected String doInBackground(Void... params) {
String resultString = null;
resultString = getJSON(mUrl);
return resultString;
}
@Override
protected void onPostExecute(String strings) {
super.onPostExecute(strings);
dynamictext.setText(strings);
}
private String getJSON(String url) { ... }
}
use AsyncTask;
public class MainActivity ... {
private TextView dynamictest;
onCreate() {
...
TestAsyncTask testAsyncTask = new TestAsyncTask(MainActivity.this, "my url here");
testAsyncTask.execute();
}
}
fetch the data from JSON data through URL and displaying it in android app using list view or recycler view
try with this one , its working for current response
public class fetchData extends AsyncTask<Void,Void,String>
{
String data="";
String dataParsed="";
String singleParsed="";
@Override
protected String doInBackground(Void... voids)
{
try
{
URL url=new URL("https://api.myjson.com/bins/baobi");
HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection();
InputStream inputStream = httpURLConnection.getInputStream();
BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream));
String line="";
while (line!=null)
{
line=bufferedReader.readLine();
data =data + line;
}
JSONObject object = new JSONObject(data);
JSONArray JA=object.optJSONArray("Table1");
JSONArray Error=object.optJSONArray("Table");
for (int i=0; i<JA.length();i++)
{
JSONObject JO= (JSONObject) JA.get(i);
singleParsed="Fund Id:" + JO.get("Fund_Id") +"\n" +
"Fund Description:" + JO.get("FN_FundDescription") +"\n";
dataParsed = dataParsed + singleParsed + "\n";
}
for (int j=0; j<Error.length();j++)
{
JSONObject JO= (JSONObject) Error.get(j);
singleParsed="Error_code:" + JO.get("Error_code") +"\n" +
"Error_Message:" + JO.get("Error_Message") +"\n"+
"EncryptionFlag:" + JO.get("EncryptionFlag") +"\n";
dataParsed = dataParsed + singleParsed + "\n";
}
return dataParsed;
}
catch (MalformedURLException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
catch (JSONException e)
{
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String aVoid)
{
super.onPostExecute(aVoid);
Log.e("data asyc",dataParsed+"");
}
}
onPostExecute I have print log , in my case output is
data asyc:
Fund Id:128
Fund Description:ABCD FUND
Fund Id:178
Fund Description:XYZ FUND
Fund Id:116
Fund Description:Pritham FUND
Fund Id:118
Fund Description:Ram FUND
Fund Id:130
Fund Description:Mannu FUND
Error_code:0
Error_Message:Success
EncryptionFlag:N
Java get JSON in Android TextView from URL
Try it!
remove
JSONObject jsonObject = new JSONObject();
And use
JSONObject json = readJsonFromUrl("http://piggybank.wordmediavormgever.nl/getSaldo.php");
try {
String response = json.getString("saldo");
Log.e("AAAAAAAAA %s", response);
}
You must call it in AsyncTask. Completed code!!!
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test2);
new GetDataSync().execute();
}
String saldo = "";
public class GetDataSync extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
try {
getData();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
txtUser.setText(saldo);
}
}
private void getData() throws IOException, JSONException {
JSONObject json = readJsonFromUrl("http://piggybank.wordmediavormgever.nl/getSaldo.php");
try {
String response = json.getString("saldo");
Log.e("AAAAAAAAA %s", response);
saldo = response;
} catch (JSONException e) {
e.printStackTrace();
}
}
private String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
public JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
is.close();
}
}
Related Topics
Override Android Backbutton Behavior Only Works on the First Page with Phonegap
Progressdialog Not Shown When Asynctask.Get() Called
How to Perform Collection Group Query Using Document Id in Cloud Firestore
Centering Recyclerview Items with Flexboxlayoutmanager
Answer Incoming Call Using Android.Telecom and Incallservice
Supporting Multiple Screen Size - Android
Android Device Manager Fails to Launch After Updating to MACos Big Sur 11.3
How to Apply Zoom, Drag and Rotation to an Image in Android
Why Does My App Size on Device Differ Than the APK or Play Store Size
How to Send Data Back from Onpostexecute in an Asynctask
Org.JSON.JSONobject Cannot Be Converted to JSONarray in Android
Multiple Screen Support in Android
"Failure Delivering Result " - Onactivityforresult
How to Click or Tap on a Textview Text
Disabling User Dragging on Bottomsheet
Super.Oncreate(Savedinstancestate);
How to Access Fragment's Child Views Inside Fragment's Parent Activity