Convierta Json Array en una Matriz Java normal

¿Hay alguna forma de convertir JSON Array a Java Array normal para el enlace de datos ListView de Android?

 ArrayList list = new ArrayList(); JSONArray jsonArray = (JSONArray)jsonObject; if (jsonArray != null) { int len = jsonArray.length(); for (int i=0;i 

Si aún no tiene un objeto JSONArray, llame

 JSONArray jsonArray = new JSONArray(jsonArrayString); 

Luego simplemente recorra eso, construyendo su propia matriz. Este código supone que es una matriz de cadenas, no debería ser difícil modificarla para adaptarse a su estructura de matriz particular.

 List list = new ArrayList(); for (int i=0; i 

Tal vez solo sea una solución (no muy eficiente) pero podrías hacer algo como esto:

String[] resultingArray = yourJSONarray.join(",").split(",");

Obviamente, puede cambiar el separador ‘ , ‘ con cualquier cosa que desee (tuve un JSONArray de direcciones de correo electrónico)

En lugar de utilizar la biblioteca org.json , intente utilizar Jackson o GSON, donde se trata de una línea única. Con Jackson, f.ex:

 List list = new ObjectMapper().readValue(json, List.class); // Or for array: String[] array = mapper.readValue(json, String[].class); 

El uso puede usar un String[] lugar de un ArrayList :

Reducirá la sobrecarga de memoria que tiene ArrayList

¡Espero eso ayude!

 String[] stringsArray = new String[jsonArray.length()]; for (int i = 0; i < jsonArray.length; i++) { parametersArray[i] = parametersJSONArray.getString(i); } 

Sé que la pregunta es sobre JSONArray, pero he aquí un ejemplo que he encontrado útil donde no es necesario usar JSONArray para extraer objetos de JSONObject.

 import org.json.simple.JSONObject; import org.json.simple.JSONValue; String jsonStr = "{\"types\":[1, 2]}"; JSONObject json = (JSONObject) JSONValue.parse(jsonStr); List list = (List) json.get("types"); if (list != null) { for (Long s : list) { System.out.println(s); } } 

Funciona también con una variedad de cadenas

Aquí hay una mejor manera de hacerlo: si obtiene los datos de la API. Luego PAREZCA el JSON y cárguelo en su lista de lista:

 protected void onPostExecute(String result) { Log.v(TAG + " result); if (!result.equals("")) { // Set up variables for API Call ArrayList list = new ArrayList(); try { JSONArray jsonArray = new JSONArray(result); for (int i = 0; i < jsonArray.length(); i++) { list.add(jsonArray.get(i).toString()); }//end for } catch (JSONException e) { Log.e(TAG, "onPostExecute > Try > JSONException => " + e); e.printStackTrace(); } adapter = new ArrayAdapter(ListViewData.this, android.R.layout.simple_list_item_1, android.R.id.text1, list); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { // ListView Clicked item index int itemPosition = position; // ListView Clicked item value String itemValue = (String) listView.getItemAtPosition(position); // Show Alert Toast.makeText( ListViewData.this, "Position :" + itemPosition + " ListItem : " + itemValue, Toast.LENGTH_LONG).show(); } }); adapter.notifyDataSetChanged(); adapter.notifyDataSetChanged(); ... 

estamos comenzando desde la conversión [JSONArray -> List ]

 public static List getJSONObjectListFromJSONArray(JSONArray array) throws JSONException { ArrayList jsonObjects = new ArrayList<>(); for (int i = 0; i < (array != null ? array.length() : 0); jsonObjects.add(array.getJSONObject(i++)) ); return jsonObjects; } 

A continuación, cree la versión genérica reemplazando array.getJSONObject (i ++) con POJO

ejemplo:

 public  static List getJSONObjectListFromJSONArray(Class forClass, JSONArray array) throws JSONException { ArrayList tObjects = new ArrayList<>(); for (int i = 0; i < (array != null ? array.length() : 0); tObjects.add( (T) createT(forClass, array.getJSONObject(i++))) ); return tObjects; } private static T createT(Class forCLass, JSONObject jObject) { // instantiate via reflection / use constructor or whatsoever T tObject = forClass.newInstance(); // if not using constuctor args fill up // // return new pojo filled object return tObject; } 

Puede usar un String[] lugar de un ArrayList :

¡Espero eso ayude!

  private String[] getStringArray(JSONArray jsonArray) throws JSONException { if (jsonArray != null) { String[] stringsArray = new String[jsonArray.length()]; for (int i = 0; i < jsonArray.length(); i++) { stringsArray[i] = jsonArray.getString(i); } return stringsArray; } else return null; } 

¿Qué hay de usar java.util.Arrays?

 List list = Arrays.asList((String[])jsonArray.toArray())