Soy nuevo en JSON y REST. Estoy trabajando con un servidor que devuelve cadenas como éstas:REST y JSON - cadena de conversión a matriz JSON
[{"username":"Hello","email":"[email protected]","credits":"100","twitter_username":""},{"username":"Goodbye","email":"[email protected]","credits":"0","twitter_username":""}]
He conseguido imprimirlos como cadenas en la consola, pero ahora quiero para convertirlos en una matriz JSON. El código que tengo hasta ahora no devuelve ningún error, pero no sé qué poner en el constructor para la nueva matriz JSON. Me he estado refiriendo a un código que me envió un colega, en el que el constructor era JSONArray (respuesta) nuevo, pero nunca me dijo qué era 'respuesta'.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import sun.misc.BASE64Encoder;
public class NetClientGet {
public static void main(String[] args) {
try {
URL url = new URL("http://username:[email protected]/index.php/api/users/get_users/");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BASE64Encoder enc = new sun.misc.BASE64Encoder();
String userpassword = "username:password";
String encoded = enc.encode(userpassword.getBytes());
conn.setRequestProperty("Authorization", "Basic " + encoded);
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ conn.getResponseCode());
}
BufferedReader br = new BufferedReader(new InputStreamReader(
(conn.getInputStream())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
JSONArray array = new JSONArray(output);
for (int i =0; i < array.size(); i++) {
JSONObject row = array.getJSONObject(i);
String user = row.getString("username");
System.out.println(user);
}
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Gracias! Funciona como un amuleto – Tiffany
Aunque tengo una pregunta: ¿hay alguna manera de obtener la cadena json sin tener que codificarla así? – Tiffany
pruebe la función getJson en la muestra del código que di como respuesta, en la siguiente publicación: http://stackoverflow.com/questions/11471884/need-help-android-json-currency-converter/11472677#11472677. Usando eso, puedes descargar datos json de servidores externos – sunil