Get JSON Data from Url Using Android

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



Leave a reply



Submit