Saya memiliki kesulitan menemukan cara bagaimana untuk mengurai JSONArray. Ini terlihat seperti ini:
[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]
Aku tahu bagaimana untuk mengurai jika JSON ditulis berbeda (dengan kata lain, jika saya memiliki objek json kembali bukan array dari objek). Tapi itu's semua yang saya miliki dan harus pergi dengan itu.
*EDIT: ini adalah valid json. Saya membuat sebuah aplikasi iPhone yang menggunakan json ini, sekarang aku harus melakukannya untuk Android dan tidak bisa figure it out. Ada banyak contoh di luar sana, tapi mereka semua JSONObject terkait. Aku butuh sesuatu untuk JSONArray.
Dapatkah seseorang tolong beri aku petunjuk, atau tutorial atau contoh?
Dihargai !
menggunakan cuplikan 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.
I'll hanya memberikan sedikit Jackson contoh:
Pertama membuat data pemegang yang memiliki bidang dari JSON string
// imports
// ...
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyDataHolder {
@JsonProperty("name")
public String mName;
@JsonProperty("url")
public String mUrl;
}
Dan mengurai daftar MyDataHolders
String jsonString = // your json
ObjectMapper mapper = new ObjectMapper();
List<MyDataHolder> list = mapper.readValue(jsonString,
new TypeReference<ArrayList<MyDataHolder>>() {});
Menggunakan daftar item
String firstName = list.get(0).mName;
String secondName = list.get(1).mName;
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);
}
}
Output:
name1
url1
name2
url2
Membuat kelas untuk memegang benda-benda.
public class Person{
private String name;
private String url;
//Get & Set methods for each field
}
Kemudian deserialize sebagai berikut:
Gson gson = new Gson();
Person[] person = gson.fromJson(input, Person[].class); //input is your String
Referensi Artikel: http://blog.patrickbaumann.com/2011/11/gson-array-deserialization/
Dalam contoh ini ada beberapa benda di dalam satu json array. Artinya,
Ini adalah json array: [{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]
Ini adalah salah satu objek: {"":"name1","url":"url1"}
Dengan asumsi bahwa anda telah mendapat hasil untuk 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");
}
@Stebra Lihat contoh ini. Hal 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 ketika anda mendapatkan hasil; mengurai seperti ini
List<CustomerInfo> customers = null;
customers = (List<CustomerInfo>)gson.fromJson(result, new TypeToken<List<CustomerInfo>>() {}.getType());
Beberapa saran yang besar yang sudah disebutkan. Menggunakan GSON ini benar-benar berguna memang, dan untuk membuat hidup lebih mudah, anda dapat mencoba ini website It's disebut jsonschema2pojo dan tidak tepat:
Anda memberikan json anda dan menghasilkan sebuah objek java yang bisa di tempel di proyek anda. Anda dapat memilih GSON untuk memberikan keterangan pada variabel-variabel, sehingga penggalian objek dari json anda mendapatkan bahkan lebih mudah!
Kasus saya Beban Dari Server Contoh..
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"));
}
Berharap itu membantu
Membuat POJO Java Class 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 hanya membuat Daftar NameUrlClass dan menginisialisasi ke ArrayList seperti:
List<NameUrlClass> obj = new ArrayList<NameUrlClass>;
Anda dapat menggunakan toko JSON array pada objek ini
obj = JSONArray;//[{"name":"name1","url":"url1"}{"name":"name2","url":"url2"},...]
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);
Posting lama aku tahu, tapi kecuali aku've salah memahami pertanyaan, ini harus melakukan trik:
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]);
}
}