Czy istnieje sposób konwertowania JSON Array na normalny Java Array dla powiązania danych Android ListView?Konwertuj Json Array na normalny Java Array
Odpowiedz
ArrayList<String> list = new ArrayList<String>();
JSONArray jsonArray = (JSONArray)jsonObject;
if (jsonArray != null) {
int len = jsonArray.length();
for (int i=0;i<len;i++){
list.add(jsonArray.get(i).toString());
}
}
dla pętli brakuje nawiasu zamykającego ... wypróbowana edycja, ale nie wystarcza znaków do zatwierdzenia. No cóż! tylko FYI. –
itz właściwie nie brakuje, odpowiadający właśnie wkleił fragment kodu z klamrami otwierającymi i zamykającymi tej funkcji. –
Co się stanie, jeśli 'jsonArray.get (i)' zwróci wartość null (w wyniku parsowania tego: '[" String 1 ", null," String 2 "]')? Czy to nie byłaby twoja awaria dla pętli? – dbm
Jeżeli nie masz jeszcze obiekt JSONArray, zadzwoń
JSONArray jsonArray = new JSONArray(jsonArrayString);
pętlę po prostu przez to, budując swoją tablicę. Ten kod zakłada, że jest to tablica łańcuchów, więc nie powinno być trudniej modyfikować, aby pasowała do konkretnej struktury macierzy.
List<String> list = new ArrayList<String>();
for (int i=0; i<jsonArray.length(); i++) {
list.add(jsonArray.getString(i));
}
.size() powinno być .length() – vaskin
Przepraszam, masz rację - jestem mylące Listy z JSONArrays :) Jest rzeczywiście JSONArray.length(). – Nick
dziękuję, pomogło ..: D – andikurnia
Co powiesz na używanie java.util.Arrays?
List<String> list = Arrays.asList((String[])jsonArray.toArray())
Wsporniki nie pasują i to nie działa dla mnie. – yingted
Nie widzę metody 'toArray()' w dokumentacji 'JSONArray()'. http://www.json.org/javadoc/org/json/JSONArray.html To pytanie prawdopodobnie nie zostałoby zadane, gdyby istniało proste 'toArray()'. – javajavajavajavajava
net.sf.json.JSONArray ma metodę toArray(), więc ta odpowiedź działa dla tej biblioteki JSON. Pytanie nie określało używanej biblioteki. – ilinca
Może to tylko obejście (nie bardzo wydajny), ale można zrobić coś takiego:
String[] resultingArray = yourJSONarray.join(",").split(",");
Oczywiście można zmienić „,
” separator cokolwiek chcesz (miałem a JSONArray
adresów e-mail)
Wiem, że to pytanie dotyczy JSONArray, ale oto przykład, który uznałem za przydatny tam, gdzie nie trzeba używać JSONArray do wyodrębniania obiektów z JSONObject.
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
String jsonStr = "{\"types\":[1, 2]}";
JSONObject json = (JSONObject) JSONValue.parse(jsonStr);
List<Long> list = (List<Long>) json.get("types");
if (list != null) {
for (Long s : list) {
System.out.println(s);
}
}
współpracuje również z tablicy ciągów
Tutaj jest lepszy sposób to zrobić: jeśli otrzymujesz dane z API. Następnie analizowania JSON i ładowania go na swoim ListView:
protected void onPostExecute(String result) {
Log.v(TAG + " result);
if (!result.equals("")) {
// Set up variables for API Call
ArrayList<String> list = new ArrayList<String>();
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<String>(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();
...
Zamiast dołączone w org.json
biblioteki, spróbuj użyć Jacksona lub GSON, gdzie jest to jedno-liner. Z Jackson, f.ex:
List<String> list = new ObjectMapper().readValue(json, List.class);
// Or for array:
String[] array = mapper.readValue(json, String[].class);
stosowanie może użyć String[]
zamiast ArrayList<String>
:
To zmniejszy obciążenie pamięci, który ArrayList ma
Nadzieję, że to pomaga!
String[] stringsArray = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length; i++) {
parametersArray[i] = parametersJSONArray.getString(i);
}
my począwszy od konwersji [JSONArray -> Lista < JSONObject>]
public static List<JSONObject> getJSONObjectListFromJSONArray(JSONArray array)
throws JSONException {
ArrayList<JSONObject> jsonObjects = new ArrayList<>();
for (int i = 0;
i < (array != null ? array.length() : 0);
jsonObjects.add(array.getJSONObject(i++))
);
return jsonObjects;
}
obok stworzyć generyczną wersję zastępując array.getJSONObject (i ++) z POJO
przykład:
public <T> static List<T> getJSONObjectListFromJSONArray(Class<T> forClass, JSONArray array)
throws JSONException {
ArrayList<Tt> 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<T> 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;
}
Możesz użyć numeru String[]
zamiast ArrayList<String>
:
Mam nadzieję, że pomoże!
- 1. JSON Array Java obiektów
- 2. Konwertuj zestaw wyników Java na String array
- 3. Konwertuj java.io.StringWriter na bajt [] array
- 4. Konwertuj Array String na Int Array Swift 2?
- 5. JSON Array iteracja w systemie Android/Java
- 6. Konwertuj ES6 Iterable to Array
- 7. JSON array get length
- 8. Convert Array JSON
- 9. Porównanie Java Array
- 10. Array różnice inicjalizacji java
- 11. Java Array w Jruby
- 12. java array thread-safety
- 13. Array od daty Java
- 14. PHP Array to Json Object
- 15. Java ArrayList to Kotlin Array
- 16. RestSharp deserializacji z JSON Array
- 17. Dostęp Obiekty JSON (JavaScript Array)
- 18. Android - tworzenie JSON Array i JSON Object
- 19. Konwertowanie ArrayList na Array w java
- 20. Jak przekonwertować Java-Array na JavaCV-Matrix?
- 21. Java LinkedList to matlab array
- 22. (MongoDB Java) $ push into array
- 23. Android string-array to Array
- 24. Java: Tablica Array End Koniec
- 25. Postgres Array Append & Array Length for "Array Push"
- 26. int array na BufferedImage
- 27. Podział NSString na Array
- 28. JavaScriptSerializer.Deserialize array
- 29. Ustaw json w tablicy mysql return Array
- 30. Post JSON array do kontrolera mvc
Zabawne jest to, że 'org.JSONArray' używa ArrayList pod maską ...'TablicaList, w której przechowywane są właściwości JSONArray', więc większość pętli jest wykonywana dla niczego w wielu przypadkach (tylko dla enkapsulacji) –