2016-04-28 18 views
0

Ich bin Lib nachzurüsten .. aber ich lese es verfügt über so inspiriert i this..i verwendet haben This link zu verwenden und ich Antwort habe wie folgtandroid -verwenden Retrofit lib Fehler bekommen die Antwort beim Parsen

{ 
    "Users":[ 
     { 
     "firstname":"Mike", 
     "lastname":"Dalisay", 
     "username":"mike143" 
     }, 
     { 
     "firstname":"Jemski", 
     "lastname":"Panlilios", 
     "username":"jemboy09" 
     }, 

ich auch diese in-Schnittstelle erfolgen

public void GetUser(Callback<List<Users>> respose); 

Aber immer 04-28 07:05:13.613 32242-32242/package name I/System.out﹕ error.toString() = retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 1 path $

Mein Users.class

public class Users { 
// @SerializedName(value="Users") 
    String firstname; 
    String astname; 
    String username; 
    public List<Users> user; 

    public void setUsers(List<Users> users) { 
     this.user = users ; 

    } 

    public String getUsername() { 
     return username; 
    } 

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

    public String getAstname() { 
     return astname; 
    } 

    public void setAstname(String astname) { 
     this.astname = astname; 
    } 

    public String getFirstname() { 
     return firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 


} 

ich meine Klasse haben Antwort von folgenden yozzy die bearbeitet und nannte es wie

api.GetUser(new Callback<UserResponse>() { 
    @Override 
    public void success(UserResponse userResponse, Response response) { 
     System.out.println(response.toString()); 
     loading.dismiss(); 

    } 
    public void failure(RetrofitError error) { 
     System.out.println("error.toString() = " + error.toString()); 
    } 
}); 

aber [email protected]

+0

Post-Benutzer-Klasse. –

+0

Benutzer ist vom Typ Array, und ich denke, Sie haben als String –

+0

deklariert Sie testeten 'Astname', einfach versuchen, ein 'l' hinzuzufügen :) – FrenchFalcon

Antwort

0
Public class Result{ 
private List<Users> Users; 
} 


public class Users { 
     private String firstname; 
     private String lastname; 
     private String username; 

     public String getFirstname() { 
      return firstname; 
     } 

     public void setFirstname(String firstname) { 
      this.firstname = firstname; 
     } 

     public String getLastname() { 
      return lastname; 
     } 

     public void setLastname(String lastname) { 
      this.lastname = lastname; 
     } 

     public String getUsername() { 
      return username; 
     } 

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

Und verwenden Sie die Result class bekommen.

public void GetUser(Callback<Result> respose); 
1

Ihre JSON-Antwort beginnt mit einem {so dass es ein Objekt ist.

Ihre Schnittstelle sollte wie folgt sein:

public void GetUser(Callback<UserResponse> response); 

Und Ihr Modell Antwortanwender so sein sollte:

public class UserResponse implements Serializable { 

    private ArrayList<User> Users; 

    public ArrayList<User> getUsers() { 
     return Users; 
    } 

    public void setUsers(ArrayList<User> Users) { 
     this.Users = Users; 
    } 
} 

Und schließlich Ihr User-Modell:

public class User implements Serializable { 

    private String firstname; 

    public String getFirstname() { 
     return firstname; 
    } 

    public void setFirstname(String firstname) { 
     this.firstname = firstname; 
    } 
} 

By the way Retrofit wurde aktualisiert siehe diesen Link: http://square.github.io/retrofit/

+0

habe ich api.GetUser verwendet (neuer Callback () { @Override public void Erfolg (UserResponse userResponse, Antwort Antwort) { System.out.println (response.toString ()); loading.dismiss(); } public void Versagen (RetrofitError error) { System.out.println ("Error.toString() =" + Error.toString());} }) ; – Android

+0

aber ich bin immer Antwort wie [email protected] – Android

+0

Ihre Antwort Um sich einzuloggen: 'für (Benutzer Benutzer: userResponse.getUsers()) { Log.e ("Response", user.getFirstname()) ; } ' – yozzy

Verwandte Themen