Do not bring data in Json Array on Android

5

I have a problem in bringing data into an Array in Json . It looks like it does not execute the Try catch, but in the variable result it brings all the data. I would like to get the name field, but it does not run the Array.

See my code:

PHP:

<?php //string json (array contendo 3 elementos) 

    $json_str = '{"empregados": '. '[{"nome":"Jason Jones", "idade":38, "sexo": "M"},'. '{"nome":"Ada Pascalina", "idade":35, "sexo": "F"},'. 

    '{"nome":"Delphino da Silva", "idade":26, "sexo": "M"}'. ']}'; 

    //faz o parsing da string, criando o array "empregados"
    $jsonObj = json_decode($json_str); 

    $empregados = $jsonObj->empregados; 

     //navega pelos elementos do array, imprimindo cada empregado 

    foreach ( $empregados as $e ) { 
         echo "nome: $e->nome - idade: $e->idade - sexo: $e->sexo<br>"; 
    } 
?> 


JAVA:

public class retornaUsuario extends Activity  {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        AcessoRest ar = new AcessoRest();
        String chamadaWS;
        chamadaWS = "http://www.cordeiro-it.com.br/SOUPROGRESSO/Ctrl/teste.php";
        String resultado = ar.chamadaGet(chamadaWS);
        Log.i("JSON:",resultado);

        JSONObject jsonResponse;
        try {
             ArrayList<String> temp = new ArrayList<String>();
               jsonResponse = new JSONObject(resultado);
               JSONArray usuarios = jsonResponse.getJSONArray("empregados");
               System.out.println(usuarios);
               for(int i=0;i<usuarios.length();i++){
                   JSONObject usuario = usuarios.getJSONObject(i);
                   JSONArray characters = usuario.getJSONArray("nome");
                   for(int j=0;j<characters.length();j++){
                       temp.add(characters.getString(j));
                   }
               }
               Toast.makeText(this, "Json: "+temp, Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            // ERRO
            System.out.println("Erro ao retornar dados do usuário");
        }

    }
}
    
asked by anonymous 18.06.2015 / 21:59

2 answers

1
<?PHP
$idades = array("Jason"=>38, "Ada"=>35, "Delphino"=>26);
$json_str = json_encode($idades); 
echo "$json_str";
?>

Test with this php.

    
18.06.2015 / 22:39
1

I solved it like this:

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        AcessoRest ar = new AcessoRest();
        String chamadaWS;
        chamadaWS = "http://www.cordeiro-it.com.br/SOUPROGRESSO/Ctrl/teste.php";
        String resultado = ar.chamadaGet(chamadaWS);
        System.out.println(resultado);
        Log.i("JSON:",resultado);

        try {
            // Tratamento de erros
             JSONObject jsonResponse = new JSONObject(resultado);
             JSONArray usuarios = jsonResponse.getJSONArray("empregados");

             for(int i=0; i < usuarios.length(); i++) {
                 JSONObject jsonobject = usuarios.getJSONObject(i);
                 String nome   = jsonobject.getString("nome");
                 String cpf    = jsonobject.getString("cpf");
              }  

        } catch (Exception e) {
            // ERRO
            e.printStackTrace();
            System.out.println("Erro ao retornar dados do usuário");
        }

    }
    
19.06.2015 / 14:19