2017-01-07 2 views
2

Ich arbeite mit Android Studio und ich möchte die Daten aus der Datenbank mongodb abrufen. Also habe ich die Verbindung aufgebaut und ich kann die Daten in JSON erfolgreich bekommen. Aber wenn ich es iterieren will, funktioniert es nicht.Wollen Sie Daten von einem JSONObject

ArrayList<DatabaseSchema> user = new ArrayList<DatabaseSchema>(); 

String mongoarray = "{ db_list: " + list + "}"; 
Object o = com.mongodb.util.JSON.parse(mongoarray); 
DBObject dbObj = (DBObject) o; 
BasicDBList userList = (BasicDBList) dbObj.get("db_list"); 

for (Object obj : userList) { 
    DBObject userObj = (DBObject) obj; 
    DatabaseSchema temp = new DatabaseSchema(); 
    temp.setUsername(userObj.get("username").toString()); 
    user.add(temp); 
} 

Und am Ende dieses Verfahrens möchte ich die Benutzer zurückzukehren. Aber wenn ich den Benutzernamen dieses Benutzers abrufen möchte, bekomme ich nichts und es gibt keinen Fehler.

EDIT:

public class DatabaseSchema { 
    public String username; 

    public void setUsername(String username) { 
    this.username = username; 
    } 

    public String getUsername() { 
    return username; 
    } 
} 

und ich abrufen diesen Eingang:

[{ "_id": { "$ oid": "586 .."}, "Dokument": { "Benutzername": "gmz"}}]

+0

Sind Sie sicher, DabaseSchema ist der richtige Typ ..? Außerdem ist die Verwendung der Objektklasse meistens nicht die beste Vorgehensweise. – Gewure

+2

@Gewure ja, es ist der richtige. Haben Sie ein Beispiel, wie kann ich es implementieren, ohne die Objektklasse zu verwenden? – gmz

+0

nein, habe ich nicht. Ich habe gerade herausgefunden, dass das Casting sehr unnatürlich wirkt. vielleicht guten Kerl mkyong kann Ihnen dabei helfen: http://www.mkyong.com/mongodb/spring-data-mongodb-query-document/ – Gewure

Antwort

0

Sie können die for-Schleife wie folgt aktualisieren.

for (Object obj : userList) { 
     DBObject userObj = (DBObject) obj; 
     DatabaseSchema temp = new DatabaseSchema(); 
     DBObject document = (DBObject) userObj.get("document"); 
     temp.setUsername((String) document.get("username")); 
     user.add(temp); 
}