0

I am new JSON android studio I am doing a very simple JSON thing and I can't get the JSONArray name. I just want to display the "username" parameters.

this is the JSON:

[
 {
   id: 1,
   name: "Leanne Graham",
   username: "Bret",
   email: "[email protected]",
   address: {
   street: "Kulas Light",
   suite: "Apt. 556",
city: "Gwenborough",
zipcode: "92998-3874",
geo: {
lat: "-37.3159",
lng: "81.1496"
}
},
phone: "1-770-736-8031 x56442",
website: "hildegard.org",
company: {
name: "Romaguera-Crona",
catchPhrase: "Multi-layered client-server neural-net",
bs: "harness real-time e-markets"
}
},
{
id: 2,
name: "Ervin Howell",
username: "Antonette",
email: "[email protected]",
address: {
street: "Victor Plains",
suite: "Suite 879",
city: "Wisokyburgh",
zipcode: "90566-7771",
geo: {
lat: "-43.9509",
lng: "-34.4618"
}
},
phone: "010-692-6593 x09125",
website: "anastasia.net",
company: {
name: "Deckow-Crist",
catchPhrase: "Proactive didactic contingency",
bs: "synergize scalable supply-chains"
}
},
{
id: 3,
name: "Clementine Bauch",
username: "Samantha",
email: "[email protected]",
address: {
street: "Douglas Extension",
suite: "Suite 847",
city: "McKenziehaven",
zipcode: "59590-4157",
geo: {
lat: "-68.6102",
lng: "-47.0653"
}
},
phone: "1-463-123-4447",
website: "ramiro.info",
company: {
name: "Romaguera-Jacobson",
catchPhrase: "Face to face bifurcated interface",
bs: "e-enable strategic applications"
}
},
{
id: 4,
name: "Patricia Lebsack",
username: "Karianne",
email: "[email protected]",
address: {
street: "Hoeger Mall",
suite: "Apt. 692",
city: "South Elvis",
zipcode: "53919-4257",
geo: {
lat: "29.4572",
lng: "-164.2990"
}
},
phone: "493-170-9623 x156",
website: "kale.biz",
company: {
name: "Robel-Corkery",
catchPhrase: "Multi-tiered zero tolerance productivity",
bs: "transition cutting-edge web services"
}
},
{
id: 5,
name: "Chelsey Dietrich",
username: "Kamren",
email: "[email protected]",
address: {
street: "Skiles Walks",
suite: "Suite 351",
city: "Roscoeview",
zipcode: "33263",
geo: {
lat: "-31.8129",
lng: "62.5342"
}
},
phone: "(254)954-1289",
website: "demarco.info",
company: {
name: "Keebler LLC",
catchPhrase: "User-centric fault-tolerant solution",
bs: "revolutionize end-to-end systems"
}
},
{
id: 6,
name: "Mrs. Dennis Schulist",
username: "Leopoldo_Corkery",
email: "[email protected]",
address: {
street: "Norberto Crossing",
suite: "Apt. 950",
city: "South Christy",
zipcode: "23505-1337",
geo: {
lat: "-71.4197",
lng: "71.7478"
}
},
phone: "1-477-935-8478 x6430",
website: "ola.org",
company: {
name: "Considine-Lockman",
catchPhrase: "Synchronised bottom-line interface",
bs: "e-enable innovative applications"
}
},
{
id: 7,
name: "Kurtis Weissnat",
username: "Elwyn.Skiles",
email: "[email protected]",
address: {
street: "Rex Trail",
suite: "Suite 280",
city: "Howemouth",
zipcode: "58804-1099",
geo: {
lat: "24.8918",
lng: "21.8984"
}
},
phone: "210.067.6132",
website: "elvis.io",
company: {
name: "Johns Group",
catchPhrase: "Configurable multimedia task-force",
bs: "generate enterprise e-tailers"
}
},
{
id: 8,
name: "Nicholas Runolfsdottir V",
username: "Maxime_Nienow",
email: "[email protected]",
address: {
street: "Ellsworth Summit",
suite: "Suite 729",
city: "Aliyaview",
zipcode: "45169",
geo: {
lat: "-14.3990",
lng: "-120.7677"
}
},
phone: "586.493.6943 x140",
website: "jacynthe.com",
company: {
name: "Abernathy Group",
catchPhrase: "Implemented secondary concept",
bs: "e-enable extensible e-tailers"
}
},
{
id: 9,
name: "Glenna Reichert",
username: "Delphine",
email: "[email protected]",
address: {
street: "Dayna Park",
suite: "Suite 449",
city: "Bartholomebury",
zipcode: "76495-3109",
geo: {
lat: "24.6463",
lng: "-168.8889"
}
},
phone: "(775)976-6794 x41206",
website: "conrad.com",
company: {
name: "Yost and Sons",
catchPhrase: "Switchable contextually-based project",
bs: "aggregate real-time technologies"
}
},
{
id: 10,
name: "Clementina DuBuque",
username: "Moriah.Stanton",
email: "[email protected]",
address: {
street: "Kattie Turnpike",
suite: "Suite 198",
city: "Lebsackbury",
zipcode: "31428-2261",
geo: {
lat: "-38.2386",
lng: "57.2232"
}
},
phone: "024-648-3804",
website: "ambrose.net",
company: {
name: "Hoeger LLC",
catchPhrase: "Centralized empowering task-force",
bs: "target end-to-end models"
}
}
]

and this is my code:

package com.example.roa.jasonhw_31116;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

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

    textView = (TextView) findViewById(R.id.textView);
    JasonConn jasonConn = new JasonConn();
    jasonConn.execute("http://jsonplaceholder.typicode.com/users");
}


public class JasonConn extends AsyncTask<String, Void, String >{


    HttpURLConnection connection = null;
    BufferedReader reader = null;
    String result = "";
    String username =  "";


    @Override
    protected String doInBackground(String... params) {
        try {
            URL url = new URL(params[0]);
            //  open the connection to the server (send request)
            connection = (HttpURLConnection) url.openConnection();
            // check if response code is ok!
            if(connection.getResponseCode() != HttpURLConnection.HTTP_OK){
                return "Error from server";
            }
            reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String line;
            if((line = reader.readLine()) != null){
                result += line;
            }

            JSONArray jArray = new JSONArray(result);

            for(int i = 0; i<jArray.length(); i++){
                JSONObject jRealObj = jArray.getJSONObject(i);
                username += jRealObj.getString("username");

            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return username;
    }

    @Override
    protected void onPostExecute(String s) {

            textView.setText(username);

    }
 }
}

thanks to all!!

7
  • What exactly is the problem? "Can't get the username" is not very descriptive. Commented Jan 31, 2016 at 19:39
  • the program crash and does'nt giv me eny results Commented Jan 31, 2016 at 19:41
  • @Roish: If it crashes then please post your logcat error trace too. Commented Jan 31, 2016 at 19:42
  • in the debuging i get "[" in the result Commented Jan 31, 2016 at 19:42
  • org.json.JSONException: Unterminated array at character 1 of [ Commented Jan 31, 2016 at 19:43

2 Answers 2

1

You are not reading the result properly.

Change

if((line = reader.readLine()) != null){
        result += line;
}

to

StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
}
result = sb.toString();
Sign up to request clarification or add additional context in comments.

10 Comments

I get red color on ".append". do i need to import something?
@Roish: Missed one line. Please see now.
now I got this: org.json.JSONException: Expected literal value at character 0 of ]
sorry my mistake. it is working but I really dont understand why
The result variable has the complete JSON.
|
0

just to know. i try again the solution you gave but without the
StringBuilder() and it is work good. the code look like this:

 while ((line = reader.readLine()) != null) {
                result += line + "\n";
            }

thanks again :)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.