Jump to content

problema com JSON


GaaF
 Share

Recommended Posts

criei um webservice com o codigo

<?php
$arrayRetorno = array("campor1" => "valor1", "campor2"=>"valor2", "campor3"=>"valor3");
$json["retorno"] = $arrayRetorno;
echo json_encode($json);
?>

e numa aplicação android le-me -> {"retorno":{"campor1":"valor1","campor2":"valor2","campor3":"valor3"}}

quando sopostamente devia ler -> {"retorno":[ {"campo1":"valor1"},{"campo2":"valor2"},{"campo3":"valor3"} ]}

codigo java para ir ler


public String page = "";
public GetHttp(String URL) throws Exception{
	 BufferedReader bufferedReader = null;
	 try{
		 HttpClient client = new DefaultHttpClient();
		 client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "android");
		 HttpGet request = new HttpGet();
		 request.setHeader("Content-Type", "text/plain; charset=utf-8");

		 request.setURI(new URI(URL));
		 HttpResponse response = client.execute(request);
		 bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
		 StringBuffer stringBuffer = new StringBuffer("");
		 String line = "";
		 String NL = System.getProperty("line.separator");


		 while ((line = bufferedReader.readLine()) != null){
			 stringBuffer.append(line + NL);

		 }
		 bufferedReader.close();


		 page = stringBuffer.toString();
	 }catch (Exception e) {
		 Log.e("GetHttp", e.toString());
	 }finally{
		 if (bufferedReader != null){
			 try{
				 bufferedReader.close();
			 }catch (IOException e){
				 Log.e("GetHttp", e.toString());
			 }
		 }
	 }
 }

para fazer o parser

page = http.page;

	 // page = "{\"retorno\":[ {\"campo1\":\"valor1\"},{\"campo2\":\"valor2\"},{\"campo3\":\"valor3\"} ]}";

	 JSONObject object = (JSONObject) new JSONTokener(page).nextValue();


	 JSONArray message = object.getJSONArray("retorno");

	 for(int i=0;i<message.length();i++){
		 Log.d("dedug", i+"");
		 JSONObject lines = (JSONObject) new JSONTokener(message.getString(i)).nextValue();
			 Log.d("WS", "Retorno: "+ lines.getString("campo"+(i+1)) );
	 }

testei forcei a string correcta e funciona

correndo

<?php
echo phpinfo();
?>

obtenho isto

json support enabled

json version 1.2.1

no meio disto tudo sera que alguém me pode ajudar?

Link to comment
Share on other sites

<?php
$arrayRetorno = array("campor1" => "valor1", "campor2"=>"valor2", "campor3"=>"valor3");
$json["retorno"] = $arrayRetorno;
echo json_encode($json);
?>

e numa aplicação android le-me -> {"retorno":{"campor1":"valor1","campor2":"valor2","campor3":"valor3"}}

quando sopostamente devia ler -> {"retorno":[ {"campo1":"valor1"},{"campo2":"valor2"},{"campo3":"valor3"} ]}

Supostamente, devia ler exactamente o que está ler; está correctíssimo. Se queres que o resultado seja o de baixo, tens de alterar o teu código que gera o JSON.

  • Vote 1

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

o php só gera listas se os indices do array associativo forem números, o que não acontece no teu caso. quando tens arrays associativos onde os indices não são numero ele cria "objectos" de json

deverias ter:

$arrayRetorno = array(array("campor1" => "valor1"), array("campor2"=>"valor2"), array("campor3"=>"valor3"));

isto é a mesma coisa que

$arrayRetorno = array(0 => array("campor1" => "valor1"), 1 => array("campor2"=>"valor2"), 2 => array("campor3"=>"valor3"));

e isto sim cria o que pretendes

Edited by HappyHippyHippo
  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

o php só gera listas se os indices do array associativo forem números, o que não acontece no teu caso. quando tens arrays associativos onde os indices não são numero ele cria "objectos" de json

ha a possibilidade ir buscar os dados do

{"retorno":{"campor1":"valor1","campor2":"valor2","campor3":"valor3"}}

ou seja o que ta em valor1 etc, pela string?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.