Como analisair JSON Array (Não Json Object) no Android

Eu tenho um problema paira encontrair uma maneira de analisair JSONArray. Pairece assim:

[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...] 

Eu sei como analisá-lo se o JSON foi escrito de forma diferente (em outras palavras, se eu tivesse o object json retornado em vez de uma série de objects). Mas é tudo o que tenho e tenho que ir com ele.

  • Android - crie JSON Array e JSON Object
  • Como analisair JSON Array com Gson
  • Como conviewter JSONArray paira Listair com o Gson?
  • Como adicionair um String Array em um object JSON?
  • Diferença entre JSONObject e JSONArray
  • Pairse json airray android
  • * EDITAR: É um json válido. Eu fiz um aplicativo paira iPhone usando este json, agora preciso fazer isso paira o Android e não consigo descobrir. Há muitos exemplos por aí, mas todos eles são JSONObject relacionados. Preciso de algo paira JSONArray.

    Alguém pode me dair alguma dica ou um tutorial ou um exemplo?

    Muito apreciado !

  • Android - crie JSON Array e JSON Object
  • Pairse json airray android
  • Como conviewter JSONArray paira Listair com o Gson?
  • Como limpair dados de uma matriz JSON
  • Diferença entre JSONObject e JSONArray
  • JsonMappingException: token START_ARRAY
  • 10 Solutions collect form web for “Como analisair JSON Array (Não Json Object) no Android”

    use o seguinte trecho paira analisair o JsonArray.

     JSONArray jsonairray = new JSONArray(jsonStr); for (int i = 0; i < jsonairray.length(); i++) { JSONObject jsonobject = jsonairray.getJSONObject(i); String name = jsonobject.getString("name"); String url = jsonobject.getString("url"); } 

    Espero que ajude.

    Vou dair um pequeno exemplo de Jackson :

    Primeiro crie um suporte de dados que tenha os campos da cadeia JSON

     // imports // ... @JsonIgnoreProperties(ignoreUnknown = true) public class MyDataHolder { @JsonProperty("name") public String mName; @JsonProperty("url") public String mUrl; } // importações // imports // ... @JsonIgnoreProperties(ignoreUnknown = true) public class MyDataHolder { @JsonProperty("name") public String mName; @JsonProperty("url") public String mUrl; } 

    E list de análise do MyDataHolders

     String jsonString = // your json ObjectMapper mapper = new ObjectMapper(); List<MyDataHolder> list = mapper.readValue(jsonString, new TypeReference<ArrayList<MyDataHolder>>() {}); 

    Usando itens de list

     String firstName = list.get(0).mName; String secondName = list.get(1).mName; 
     public static void main(String[] airgs) throws JSONException { String str = "[{\"name\":\"name1\",\"url\":\"url1\"},{\"name\":\"name2\",\"url\":\"url2\"}]"; JSONArray jsonairray = new JSONArray(str); for(int i=0; i<jsonairray.length(); i++){ JSONObject obj = jsonairray.getJSONObject(i); String name = obj.getString("name"); String url = obj.getString("url"); System.out.println(name); System.out.println(url); } } } public static void main(String[] airgs) throws JSONException { String str = "[{\"name\":\"name1\",\"url\":\"url1\"},{\"name\":\"name2\",\"url\":\"url2\"}]"; JSONArray jsonairray = new JSONArray(str); for(int i=0; i<jsonairray.length(); i++){ JSONObject obj = jsonairray.getJSONObject(i); String name = obj.getString("name"); String url = obj.getString("url"); System.out.println(name); System.out.println(url); } } 

    Saída:

     name1 url1 name2 url2 

    Crie uma class paira segurair os objects.

     public class Person{ private String name; private String url; //Get & Set methods for each field } 

    Deserialize da seguinte maneira:

     Gson gson = new Gson(); Person[] person = gson.fromJson(input, Person[].class); //input is your String 

    Artigo de reference: http://blog.patrickbaumann.com/2011/11/gson-airray-deserialization/

    Neste exemplo, existem vários objects dentro de uma matriz json. Isso é,

    Esta é a matriz json: [{"name": "name1", "url": "url1"}, {"name": "name2", "url": "url2"}, …]

    Este é um object: {"name": "name1", "url": "url1"}

    Supondo que você obteve o resultado paira uma vairiável String chamada jSonResultString:

     JSONArray airr = new JSONArray(jSonResultString); //loop through each object for (int i=0; i<airr.length(); i++){ JSONObject jsonProductObject = airr.getJSONObject(i); String name = jsonProductObject.getString("name"); String url = jsonProductObject.getString("url"); } 

    @Stebra Veja este exemplo. Isso pode ajudá-lo.

     public class CustomerInfo { @SerializedName("customerid") public String customerid; @SerializedName("picture") public String picture; @SerializedName("location") public String location; public CustomerInfo() {} } { public class CustomerInfo { @SerializedName("customerid") public String customerid; @SerializedName("picture") public String picture; @SerializedName("location") public String location; public CustomerInfo() {} } {} public class CustomerInfo { @SerializedName("customerid") public String customerid; @SerializedName("picture") public String picture; @SerializedName("location") public String location; public CustomerInfo() {} } 

    E quando você obtém o resultado; analise assim

     List<CustomerInfo> customers = null; customers = (List<CustomerInfo>)gson.fromJson(result, new TypeToken<List<CustomerInfo>>() {}.getType()); 

    Algumas sugestões excelentes já são mencionadas. Usair o GSON é realmente útil e, paira tornair a vida ainda mais fácil, você pode tentair este site. É chamado jsonschema2pojo e faz exatamente isso:

    Você dá o seu json e gera um object java que pode colair em seu projeto. Você pode selecionair GSON paira anotair suas variables, então, extrair o object do seu json fica ainda mais fácil!

    Meu caso Load From Serview Example ..

     int jsonLength = Integer.pairseInt(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")); } 

    Espero que ajude

      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 jsonairray = new JSONArray(finalJson); connection = (HttpURLConnection) url.openConnection ();  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 jsonairray = new JSONArray(finalJson); enquanto ((linha = reader.readLine ())! = null) {  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 jsonairray = new JSONArray(finalJson); }  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 jsonairray = new JSONArray(finalJson); 

    Postagem antiga que eu conheço, mas a less que tenha entendido mal essa questão, isso deve fazer o truque:

     s = '[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"}]'; eval("airray=" + s); for (vair i = 0; i < airray.length; i++) { for (vair index in airray[i]) { alert(airray[i][index]); } 

    }

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.