Analizar el objeto JSON con gson
Estoy tratando de analizar JSON como:
{"response":[123123, 1231231, 123124, 124124, 111111, 12314]}
Con GSON, haciendo
- Cargar imagen en ImageView de la URL almacenada en JSONString en Android
- Análisis de un ID de cadena con SugarORM y GSON
- Google Analytic "GET A CONFIGURATION FILE" no me permite seleccionar mi cuenta
- ¿Eliminar y editar elementos de la lista en android?
- Widget de conexión de Android facebook: org.json.JSONException
Gson gson = new GsonBuilder().create(); int[] friends = new Gson().fromJson(answer, int[].class); System.out.print(friends[0]);
Pero obtenga el Error Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2
¿Cómo analizar estos números en la matriz?
- Quiero google play store como scrollview
- org.json.JSONObject no se puede convertir en JSONArray
- Cómo tratar un objeto JSON grande en Android
- GCM Error = MissingRegistration enviando mensajes vía JSON
- Problema: "Extracción" de JSON usando ascensor-json en una aplicación Android (Scala)
- Twitter JSON API en el desarrollo de Android
- Java OBJECT a JSONObject
- Cómo analizar json cadena en Android?
Vas a querer crear primero una clase de modelo GSON puede enlazar tu json a:
public class ResponseModel { private List<Integer> response = new ArrayList<Integer>(); public List<Integer> getResponse() { return response; } @Override public String toString() { return "ResponseModel [response=" + response + "]"; } }
Entonces usted puede llamar
Gson gson = new Gson(); ResponseModel responseModel = gson.fromJson("{\"response\":[123123, 1231231, 123124, 124124, 111111, 12314]}", ResponseModel.class); List <Integer> responses = responseModel.getResponse(); // ... do something with the int list
La otra opción que tiene fuera de usar una clase de contenedor es simplemente para obtener la matriz del árbol de análisis.
Utilice el JsonParser
para crear el árbol, obtenga su matriz de él, y luego convertir a int[]
utilizando Gson
:
public class App { public static void main( String[] args ) throws IOException { String json = "{\"response\":[1,2,3,4,5]}"; JsonObject jo = new JsonParser().parse(json).getAsJsonObject(); JsonArray jsonArray = jo.getAsJsonArray("response"); int[] myArray = new Gson().fromJson(jsonArray, int[].class); System.out.println(Arrays.toString(myArray)); } }
Tenga en cuenta que también podría trabajar con JsonArray
directamente y no convertirlo en un int[]
dependiendo de su caso de uso.
System.out.println(jsonArray.get(0).getAsInt());
BEGIN_ARRAY
pero fue BEGIN_OBJECT
significa al principio que es Object no el array. Si usted verá en el Json, la propiedad response es el tipo de objeto y ese objeto contiene además el array. Puede analizarlo de diferentes maneras Utilizando la creación de su propia clase de modelo personalizado o sin crear una clase de modelo personalizada. Si no desea crear su clase de modelo de respuesta, simplemente analizarla
final Type typeOf = new TypeToken<Map<String, List<Integer>>>() {}.getType(); final Map<String, List<Integer>> map = new Gson().fromJson(Your_JSON_String, typeOf); // finally get list of ints form map. final List<Integer> listOfIntegers =map.get("response");
Pruebe este método
String json1 = "[{\"contactName\":\"3\",\"contactNumber\":\"3\"},{\"contactName\":\"4\",\"contactNumber\":\"4\"}]"; JsonElement json = new JsonParser().parse(json1); JsonArray array= json.getAsJsonArray(); Iterator iterator = array.iterator(); List<ContactDetail> details = new ArrayList<ContactDetail>(); while(iterator.hasNext()){ JsonElement json2 = (JsonElement)iterator.next(); Gson gson = new Gson(); ContactDetail contact = gson.fromJson(json2, ContactDetail.class); //can set some values in contact, if required details.add(contact); }
Tengo otro formulario aquí
El valor de Json tiene un objeto como respuesta que contiene una matriz de enteros. Tienes que definir su clase correctamente primero:
class ResponseHolder { private Integer[] response; }
o
class ResponseHolder { private int[] response; }
o
class ResponseHolder { private String[] response; }
A continuación, utilice esa clase mientras analiza su valor json en una instancia de java:
ResponseHolder responseHolder = gson.fromJson(answer, ResponseHolder.class);
O usa org.json incluido en Android:
JSONObject jsonData = new JSONObject(answer);
JSONArray jsonItems = jsonData.getJSONArray("response");
- No se puede reanudar una actividad cuando se utiliza un viewPager
- Robolectric's Shadow Object y Mocking