0
I’m trying to create my first app to make use of a Webservice, in which case I’m just trying to return some of the information via string and later put each piece of information in its proper component, I am trying to use the coinmarketcap API to bring information, but when I try to convert the JSON error : java.util.Concurrent.Executionexception: com.google.gson.Jsonsyntaxexception: java.lang.Illegalstateexception: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $ appears, follow my 3 app classes so far:
public class MainActivity extends AppCompatActivity {
//ATRIBUTOS
private Button btOK;
private TextView tvResposta;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btOK = (Button) findViewById(R.id.bt_consultar);
    tvResposta = (TextView) findViewById(R.id.tv_resposta);
    btOK.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //FAZENDO A CONSULTA NO WEBSERVICES
            try{
                Coins coins = new HTTPService().execute().get();
                tvResposta.setText(coins.toString()); //aqui chama a função to string
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
        }
    });
}
} 
Model class:
public class Coins {
private String id;
private String name;
private String symbol;
private String rank;
private String price_usd;
private String price_btc;
//private String volume_usd_24h;
private String market_cap_usd;
private String available_supply;
private String total_supply;
private String percent_change_1h;
private String percent_change_24h;
private String percent_change_7d;
private String last_updated;
public String converter(){
    return "id: "+ getId()
            +"\n name: "+ getName()
            +"\n rank: "+ getRank()
            +"\n price_usd: "+ getPrice_usd()
            +"\n price_btc: "+getPrice_btc();
}
Class making the request and connection:
public class HTTPService extends AsyncTask<Void, Void, Coins> {
@Override
protected Coins doInBackground(Void... voids) {
    StringBuilder resposta = new StringBuilder();
    try{
        //URL QUE SERÁ CONSUMIDA
        URL url = new URL("https://api.coinmarketcap.com/v1/ticker/bitcoin/");
        //---- ABRINDO A CONEXÃO ---
        HttpURLConnection conexao = (HttpURLConnection) url.openConnection();
        conexao.setRequestMethod("GET");
        conexao.setRequestProperty("Content-type","application/json");
        conexao.setRequestProperty("Accept", "application/json");
        conexao.setDoOutput(true);
        conexao.setConnectTimeout(5000);
        conexao.connect();
        //----- LENDO AS INFORMAÇÕES -------
        Scanner scanner = new Scanner(url.openStream());
        while (scanner.hasNext()){
            resposta.append(scanner.next());
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    //---- convertendo dados do JSON
    return new Gson().fromJson(resposta.toString(), Coins.class);
}
@Override
protected void onPostExecute(Coins coins) {
    super.onPostExecute(coins);
}
@Override
protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
}
}
The error is presented when it reaches this line here:
return new Gson().fromJson(resposta.toString(), Coins.class);
Note: I omitted the getters and setters of the model class, but they are all there.
For the example I needed in string worked perfectly !!! Thank you very much Valdeir Psr!!!
– Eduardo Rafael Moraes