Saya kesulitan menemukan cara untuk mengurai JSONArray. Ini terlihat seperti ini:
[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]
Saya tahu cara menguraikannya jika JSON ditulis berbeda (Dengan kata lain, jika saya mengembalikan objek json alih-alih array objek). Tapi hanya itu yang saya miliki dan harus saya ikuti.
* EDIT: Ini adalah json yang valid. Saya membuat aplikasi iPhone menggunakan json ini, sekarang saya perlu melakukannya untuk Android dan tidak dapat mengetahuinya. Ada banyak contoh di luar sana, tetapi semuanya terkait dengan JSONObject. Saya butuh sesuatu untuk JSONArray.
Bisakah seseorang memberi saya beberapa petunjuk, atau tutorial atau contoh?
Sangat dihargai!
Jawaban:
gunakan potongan berikut untuk mengurai JsonArray.
JSONArray jsonarray = new JSONArray(jsonStr); for (int i = 0; i < jsonarray.length(); i++) { JSONObject jsonobject = jsonarray.getJSONObject(i); String name = jsonobject.getString("name"); String url = jsonobject.getString("url"); }
Semoga membantu.
sumber
Saya hanya akan memberikan sedikit contoh Jackson :
Pertama buat pemegang data yang memiliki bidang dari string JSON
// imports // ... @JsonIgnoreProperties(ignoreUnknown = true) public class MyDataHolder { @JsonProperty("name") public String mName; @JsonProperty("url") public String mUrl; }
Dan parsing daftar MyDataHolders
String jsonString = // your json ObjectMapper mapper = new ObjectMapper(); List<MyDataHolder> list = mapper.readValue(jsonString, new TypeReference<ArrayList<MyDataHolder>>() {});
Menggunakan item daftar
String firstName = list.get(0).mName; String secondName = list.get(1).mName;
sumber
DefaultHttpClient
eksekusi s adalah panggilan pemblokiran sehingga harus dilakukan di tugas latar belakang, hanya untuk menjelaskan mengapa ia berada di kelas terpisah.import your_package_name_here.HttpGetTask.OnHttpGetCompletedListener;
public static void main(String[] args) throws JSONException { String str = "[{\"name\":\"name1\",\"url\":\"url1\"},{\"name\":\"name2\",\"url\":\"url2\"}]"; JSONArray jsonarray = new JSONArray(str); for(int i=0; i<jsonarray.length(); i++){ JSONObject obj = jsonarray.getJSONObject(i); String name = obj.getString("name"); String url = obj.getString("url"); System.out.println(name); System.out.println(url); } }
Keluaran:
sumber
Buat kelas untuk menampung objek.
public class Person{ private String name; private String url; //Get & Set methods for each field }
Kemudian deserialisasi sebagai berikut:
Gson gson = new Gson(); Person[] person = gson.fromJson(input, Person[].class); //input is your String
Artikel Referensi: http://blog.patrickbaumann.com/2011/11/gson-array-deserialization/
sumber
@Stebra Lihat contoh ini. Ini dapat membantu Anda.
public class CustomerInfo { @SerializedName("customerid") public String customerid; @SerializedName("picture") public String picture; @SerializedName("location") public String location; public CustomerInfo() {} }
Dan saat Anda mendapatkan hasilnya; parse seperti ini
List<CustomerInfo> customers = null; customers = (List<CustomerInfo>)gson.fromJson(result, new TypeToken<List<CustomerInfo>>() {}.getType());
sumber
Dalam contoh ini ada beberapa objek di dalam satu array json. Itu adalah,
Ini adalah array json: [{"name": "name1", "url": "url1"}, {"name": "name2", "url": "url2"}, ...]
Ini satu objek: {"name": "name1", "url": "url1"}
Dengan asumsi Anda telah mendapatkan hasil ke variabel String yang disebut jSonResultString:
JSONArray arr = new JSONArray(jSonResultString); //loop through each object for (int i=0; i<arr.length(); i++){ JSONObject jsonProductObject = arr.getJSONObject(i); String name = jsonProductObject.getString("name"); String url = jsonProductObject.getString("url"); }
sumber
Beberapa saran bagus telah disebutkan. Menggunakan GSON memang sangat berguna, dan untuk membuat hidup lebih mudah Anda dapat mencoba situs web ini. Ini disebut jsonschema2pojo dan melakukan hal itu:
Anda memberikannya json Anda dan itu menghasilkan objek java yang dapat ditempelkan di proyek Anda. Anda dapat memilih GSON untuk membuat anotasi variabel Anda, jadi mengekstrak objek dari json Anda menjadi lebih mudah!
sumber
Kasus saya Muat Dari Contoh Server ..
int jsonLength = Integer.parseInt(jsonObject.getString("number_of_messages")); if (jsonLength != 1) { for (int i = 0; i < jsonLength; i++) { JSONArray jsonArray = new JSONArray(jsonObject.getString("messages")); JSONObject resJson = (JSONObject) jsonArray.get(i); //addItem(resJson.getString("message"), resJson.getString("name"), resJson.getString("created_at")); }
Semoga membantu
sumber
Buat Kelas Java POJO untuk objek dalam daftar seperti:
class NameUrlClass{ private String name; private String url; //Constructor public NameUrlClass(String name,String url){ this.name = name; this.url = url; } }
Sekarang cukup buat List of NameUrlClass dan inisialisasi ke ArrayList seperti ini:
List<NameUrlClass> obj = new ArrayList<NameUrlClass>;
Anda dapat menggunakan simpan array JSON di objek ini
obj = JSONArray;//[{"name":"name1","url":"url1"}{"name":"name2","url":"url2"},...]
sumber
obj = JSONArray;
yang harus dilakukan. ApaJSONArray
dalam konteks ini? Dari mana asalnya Apa tujuan menginisialisasiobj
dengannew ArrayList<NameUrlClass>
, jika Anda menggantinya langsung setelahnya?Posting lama yang saya tahu, tetapi kecuali saya salah memahami pertanyaannya, ini akan berhasil:
s = '[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"}]'; eval("array=" + s); for (var i = 0; i < array.length; i++) { for (var index in array[i]) { alert(array[i][index]); }
}
sumber
URL url = new URL("your URL"); connection = (HttpURLConnection) url.openConnection(); connection.connect(); InputStream stream = connection.getInputStream(); BufferedReader reader; reader = new BufferedReader(new InputStreamReader(stream)); StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = reader.readLine()) != null) { buffer.append(line); } //setting the json string String finalJson = buffer.toString(); //this is your string get the pattern from buffer. JSONArray jsonarray = new JSONArray(finalJson);
sumber