Ich habe Json Wert wie dieseJson Array Anfrage mit Volley funktioniert nicht
{
"events": [2]
0: {
"no": 1
"id": "2"
"nama": "Meja dengan kaki kuda"
"harga": 700000
"gambar": "poster/Donor_darah.jpg"
"stok": 39
"qty": 3
"status": 0
"total": 2100000
}-
1: {
"no": 2
"id": "1"
"nama": "Lemari"
"harga": 500000
"gambar": "poster/grand-launching-gerakan-ui-mengajar-51.png"
"stok": 0
"qty": 4
"status": 0
"total": 2000000
}-
-
"total": 4100000
}
und dann will ich es in meiner android app mit Volley abzurufen wie diese
JsonArrayRequest arrReq = new JsonArrayRequest(Request.Method.POST, DATA_GET_NOTIF + page,null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
if (response.length() > 0) {
try {
for (int a = 0; a < response.length(); a++) {
JSONObject obj = response.getJSONObject(a);
JSONArray event = obj.getJSONArray("events");
Log.d("JsonArray",response.toString());
// Parsing json
for (int i = 0; i < event.length(); i++) {
JSONObject jb = (JSONObject) event.get(i);
Cart news = new Cart();
int total = 0;
no = jb.getInt("no");
news.setId(jb.getString("id"));
news.setJudul(jb.getString("nama"));
news.setHarga(jb.getInt("harga"));
news.setStok(jb.getInt("stok"));
news.setQty(jb.getInt("qty"));
news.setStatus(jb.getInt("status"));
news.setTotal(jb.getInt("total"));
if (jb.getString("gambar") != "") {
news.setImageUrl(jb.getString("gambar"));
}
// adding news to news array
eventList.add(news);
if (no > offSet)
offSet = no;
Log.d(TAG, "offSet " + offSet);
// notifying list adapter about data changes
// so that it renders the list view with updated data
adapter.notifyDataSetChanged();
}
}
}catch (JSONException e) {
e.printStackTrace();
}
}
swipe.setRefreshing(false);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
swipe.setRefreshing(false);
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> params = new HashMap<String, String>();
params.put("authorization", apikeys);
return params;
}};
// Adding request to request queue
AppController.getInstance().addToRequestQueue(arrReq);
warum ist es nicht angezeigt, in meiner App. weil es funktioniert, bevor ich "Ereignisse" Array in meinem Json-Wert hinzufügen. so, bevor ich Ereignisse Array mein json Wert justlike dieser
[2]
0: {
"no": 1
"id": "17"
"judul": "Compfest 8 Seminar"
"deskripsi": "tes"
"duit": 47
"persen": 47
"sisahari": 47
}-
1: {
"no": 2
"id": "19"
"judul": "Grand Launching Gerakan UI Mengajar 5"
"deskripsi": "tes"
"duit": 80
"persen": 80
"sisahari": 80
}
und mein Code hinzufügen, wenn es funktioniert wie folgt aus:
JsonArrayRequest arrReq = new JsonArrayRequest(Request.Method.POST, DATA_GET_NOTIF + page,null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
if (response.length() > 0) {
// Parsing json
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);
Cart news = new Cart();
int total = 0;
no = obj.getInt("no");
news.setId(obj.getString("id"));
news.setJudul(obj.getString("nama"));
news.setHarga(obj.getInt("harga"));
news.setStok(obj.getInt("stok"));
news.setQty(obj.getInt("qty"));
news.setStatus(obj.getInt("status"));
news.setTotal(obj.getInt("total"));
if (obj.getString("gambar") != "") {
news.setImageUrl(obj.getString("gambar"));
}
Da Ihre Antwort mit einer geschweiften Klammer beginnt, Es wird als JSON-Objekt betrachtet (das zufälligerweise ein JSonarray enthält) ... aber ich denke, das OnResponse() erwartet ein reines Array, das mit einer eckigen Klammer beginnen sollte. Gibt es einen Grund, warum Sie den Namen des Arrays angeben müssen? –
ya Ich brauche es, also kann ich ein Objekt summieren und es außerhalb des Arrays "events" platzieren. es ist aber schon gelöst. nur dummer Fehler mit Start Json Wert –