Bagaimana cara mengurai array json tanpa judul objek json di Android?

   [
    {
        "name":           "The Universe & The Earth"
      , "imagename":      "cat1.jpg"
      , "active":         "Y"
      , "createdon":      "1901-01-01"
      , "lastmodifiedon": "1901-01-01 00:00:00"
      , "description":    "Knowledge of Earth location in the universe has been shaped by 400 years of telescopic observations, and has expanded radically in the last century.\n"
      , "id":             "1"
    }
  , {
        "name":           "Life on Earth"
      , "imagename":      "cat2.jpg"
      , "active":         "Y"
      , "createdon":      "1901-01-01"
      , "lastmodifiedon": "1901-01-01 00:00:00"
      , "description":    "Over the last 3.7 billion years or so, living organisms on the Earth have diversified and adapted to almost every environment imaginable."
      , "id":             "2"
    }
]

Ini adalah nilai json saya. Sekarang saya ingin menguraikan dan menampilkannya dalam tampilan daftar khusus, bagaimana saya bisa melakukan ini? Saya mengikuti http://www.androidhive.info/2012/01/android-json-parsing-tutorial/ ini adalah tautan tetapi tidak dapat dicapai. Bagaimana saya bisa melakukan ini? Adakah yang bisa memberitahuku? Terima kasih sebelumnya.


person malavika    schedule 12.07.2013    source sumber
comment
apakah ini jsonArray dan di dalamnya ada objek json?   -  person akash yadav    schedule 12.07.2013
comment
ya.. JsonArray menyimpan JsonObjects di dalamnya.   -  person Chintan Rathod    schedule 12.07.2013


Jawaban (5)


Ini adalah JSONArray dan bukan JSONObject - untuk membuat JSONObject darinya, gunakan

JSONObject jsonObject = jsonArray.getJSONObject(0);

ini mendapatkan JSONObject pertama dari JSONArray ini.

Jika Anda memiliki beberapa JSONObjects, gunakan ini:

JSONObject jsonObject;
for(int n = 0; n < jsonArray.length(); n++)
{
    jsonObject = jsonArray.getJSONObject(n);
}

Untuk mendapatkan nilai:

jsonObject.getString("name");
person Benjamin Schwalb    schedule 12.07.2013

Coba kode berikut.

JSONArray jArr = new JSONArray(your_json_string);

for (int count = 0; count < jArr.length(); count++) {
    JSONObject obj = jArr.getJSONObject(count);
    String name = obj.getString("name");
    String imageName = obj.getString("imagename");
    //so on
}
person Chintan Rathod    schedule 12.07.2013
comment
Hai. Apa your_json_string di sini? - person Shivam Bhalla; 25.01.2015
comment
@ShivamBhalla, your_json_string akan menjadi string yang ditulis dalam pertanyaan. Saya telah memberikan jawaban berdasarkan pertanyaan dan menggunakan rangkaian pertanyaan JSON yang sama. :) - person Chintan Rathod; 27.01.2015

Pertama saya membuat kelas parser JSONParser.java

package com.example.myparse;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;

public class JSONParser {

static InputStream is = null;
static JSONArray jarray = null;
static String json = "";

// constructor
public JSONParser() {

}

public JSONArray getJSONFromUrl(String url) {

       StringBuilder builder = new StringBuilder();
        HttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        try {
          HttpResponse response = client.execute(httpGet);
          StatusLine statusLine = response.getStatusLine();
          int statusCode = statusLine.getStatusCode();
          if (statusCode == 200) {
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(content));
            String line;
            while ((line = reader.readLine()) != null) {
              builder.append(line);
            }
          } else {
            Log.e("==>", "Failed to download file");
          }
        } catch (ClientProtocolException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }

    // try parse the string to a JSON object
    try {
        jarray = new JSONArray( builder.toString());
        //System.out.println(""+jarray);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jarray;

}
 }

Kemudian buat objek di kelas utama seperti ini....

 ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>(); // used to display in list view

 JSONParser jParser = new JSONParser();
 JSONArray json = jParser.getJSONFromUrl(url); // pass your ulr here

 for(int i = 0; i <= json.length(); i++)  // using for loop for parsing
 {
   try 
    {
     JSONObject c = json.getJSONObject(i);
     String name =  c.getString(TAG_NAME);
     String imagename =  c.getString(TAG_IMAGENAME);
     String active =  c.getString(TAG_ACTIVE);
     String createdon = c.getString(TAG_CREATEDON);
     String lastmodifiedon =  c.getString(TAG_LASTMODIFIEDON);
     String description =  c.getString(TAG_DESCRIPTION);
     String id =  c.getString(TAG_ID);

          // If you want to show your parsed value in list view add the values into the array list              

    // creating new HashMap
    HashMap<String, String> map = new HashMap<String, String>();

          // adding each child node to HashMap key => value 
          map.put(TAG_NAME, name);
          map.put(TAG_IMAGENAME, imagename);
    map.put(TAG_ACTIVE, active);
    map.put(TAG_CREATEDON, createdon);
    map.put(TAG_LASTMODIFIEDON, lastmodifiedon);
    map.put(TAG_DESCRIPTION, description);
    map.put(TAG_ID, id);
         // adding HashList to ArrayList
   contactList.add(map);
 System.out.println("contactlist---->"+contactList);
}

 catch (JSONException e) 
       {
    e.printStackTrace();
 }
  }

Saya melakukannya dengan cara ini. Saya mendapatkan hasil yang tepat. Semua yang terbaik.

person malavika    schedule 24.07.2013

Lihat GSON oleh Google. Ini memungkinkan Anda membuat serialisasi/deserialisasi JSON dengan cara yang sangat mudah - http://code.google.com/p/google-gson/

person Mus    schedule 12.07.2013

Anda cukup menggunakan Map untuk mengulangi semua kunci dan nilai JSONObject,

        String jsonString = "[{\"name\":\"The Universe & The Earth\", \"imagename\":\"cat1.jpg\"}, {\"name\":\"Life on Earth\", \"imagename\":\"cat2.jpg\"}]";
        JSONArray array;
        try {
            array = new JSONArray(jsonString);
            JSONObject object;
            Map<String,String> map;
            for (int i = 0; i < array.length(); i++) {
                object = new JSONObject(array.getJSONObject(i).toString());
                map = new HashMap<String,String>();
                Iterator<?> iter = object.keys();
                while(iter.hasNext()){
                    String key = (String)iter.next();
                    String value = object.getString(key);
                    map.put(key,value);
                }
                System.out.println(map.toString());
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
person Lalit Poptani    schedule 12.07.2013