it-swarm.com.de

Analysieren eines JSON-Arrays (kein Json-Objekt) in Android

Ich habe Probleme, einen Weg zu finden, wie ich JSONArray analysieren kann. Es sieht aus wie das:

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

Ich kann es analysieren, wenn das JSON anders geschrieben wurde (mit anderen Worten, wenn ich json object anstelle eines Arrays von Objekten zurückgegeben hätte). Aber es ist alles was ich habe und muss damit gehen.

* EDIT: Es ist ein gültiger JSON. Ich habe eine iPhone-App mit diesem JSON erstellt. Jetzt muss ich es für Android tun und kann es nicht herausfinden. Es gibt viele Beispiele, aber alle sind mit JSONObject verwandt. Ich brauche etwas für JSONArray.

Kann mir bitte jemand einen Hinweis geben, ein Tutorial oder ein Beispiel?

Sehr geschätzt!

78
SteBra

verwenden Sie das folgende Snippet, um das JsonArray zu analysieren.

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");
}

Ich hoffe es hilft.

130
Spring Breaker

Ich gebe nur ein kleines Jackson Beispiel:

Erstellen Sie zunächst einen Datenbehälter, der die Felder aus der JSON-Zeichenfolge enthält

// imports
// ...
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyDataHolder {
    @JsonProperty("name")
    public String mName;

    @JsonProperty("url")
    public String mUrl;
}

Und Liste der MyDataHolders analysieren

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

Listenelemente verwenden

String firstName = list.get(0).mName;
String secondName = list.get(1).mName;
25
vilpe89
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);
    }   
}   

Ausgabe:

name1
url1
name2
url2
19
Maxim Shoustin

Erstellen Sie eine Klasse für die Objekte.

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

Dann deserialisieren Sie wie folgt:

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

Referenzartikel: http://blog.patrickbaumann.com/2011/11/gson-array-deserialization/

11
Kevin Bowersox

In diesem Beispiel befinden sich mehrere Objekte in einem JSON-Array. Das ist,

Dies ist das json-Array: [{"name": "name1", "url": "url1"}, {"name": "name2", "url": "url2"}, ...]

Dies ist ein Objekt: {"name": "name1", "url": "url1"}

Angenommen, Sie haben das Ergebnis für eine String-Variable mit dem Namen 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");


}
5
TharakaNirmana

@Stebra Siehe dieses Beispiel. Dies kann Ihnen helfen.

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

    @SerializedName("location")
    public String location;

    public CustomerInfo()
    {}
}

Und wenn Sie das Ergebnis erhalten; parse so

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

Einige gute Vorschläge sind bereits erwähnt. Die Verwendung von GSON ist in der Tat sehr praktisch, und um das Leben noch einfacher zu machen, können Sie dies ausprobieren Website Es heißt jsonschema2pojo und macht genau das:

Sie geben ihm Ihren json und es erzeugt ein Java Objekt, das in Ihr Projekt eingefügt werden kann. Sie können GSON auswählen, um Ihre Variablen mit Anmerkungen zu versehen, so dass das Extrahieren des Objekts aus Ihrem json noch einfacher wird!

2
TomCB

Mein Fall Vom Server laden Beispiel ..

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"));
                }

Hoffe es hilft

1
bong jae choe