2012-04-06 4 views
0

Wenn ich mein Projekt entwickelt, hatte ich einen Fehler in Android-AktivitätDeserialisierung String json von asp zu Java-Klasse

json Zeichenfolge, die von ASP-Methode zurückgeben ist zurück, aber richtig, wenn convert json Klasse ist die Klasse gleich null (i wandle es von google json jar 2,1)

android code: 


     //to call my service and get data 

     ServiceCall call = new ServiceCall(); 

    String jsonuserdata = call.getUserData("[email protected]") 
      .toString(); 

    Toast.makeText(getApplicationContext(), jsonuserdata,Toast.LENGTH_SHORT).show(); 

     //this Toast message is print data correctly 

     Gson gson = new Gson(); 

    Type userType = new TypeToken<UserData>(){}.getType(); 

    UserData user = gson.fromJson(jsonuserdata,userType); 


    Toast.makeText(getApplicationContext(), "" + user.userid.toString(), 
      Toast.LENGTH_SHORT).show(); 

das Problem ist, wenn ich json String Klasse

asp.net Web-Methode gibt einen gültigen jSON-String zu android Methode

konvertieren
[WebMethod] 
     public string getUserData(string email) 
     { 
      UserData user = new UserData(); 

      user = DataBase.getUserData(email); 

      JavaScriptSerializer js = new JavaScriptSerializer(); 

      string strJSON = js.Serialize(user); 

      return strJSON; 
     } 

das ist meine Klasse in Java

public class UserData { 

    public static Class<UserData> USERDATA_CLASS = UserData.class; 



    public String getUserid() { 
     return userid; 
    } 

    public void setUserid(String userid) { 
     this.userid = userid; 
    } 

    public String getUsername() { 
     return username; 
    } 

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



    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 



    String username; 

    String email; 

    String password; 

    String userid; 





    public UserData() { 


    } 

    public UserData(String id, String name, String age, String weight, 
      String height, String calorie, String status, String gender, 
      String idealweight, String minidealweight, String maxidealweight, 
      String email, String password, String country, String report,String accountstatus) { 

     this.userid = id; 
     this.username = name; 

     this.email = email; 
     this.password = password; 

    } 

    public UserData(UserData user) { 


     this.userid = user.userid; 
     this.username = user.username; 

     this.email = user.email; 
     this.password = user.password; 

    } 

} 
+0

wirklich, ich werde versuchen – Developer

+0

{"Benutzername": "Benutzer", "E-Mail": "[email protected]", "password": "123", "userid": "100"} Dies ist der JSON string – Developer

Antwort

0

Sie können eine Instanz der Klasse analysieren einfach durch:

Type userType = new TypeToken<UserData>(){}.getType(); 
UserData user = gson.fromJson(jsonuserdata,userType); 

->

UserData user = gson.fromJson(jsonuserdata, UserData.class); 

EDIT Hinzufügen Erklärung :

Genommen von here:

Diese Methode ist nützlich, wenn das angegebene Objekt ein generischer Typ ist. Verwenden Sie für nicht generische Objekte stattdessen fromJson (String, Class).

Also sollten Sie nicht den Typ Parameter, sondern die Klasse verwenden.

+0

ich habe es, aber nichts geändert – Developer

+0

Was ist der Fehler, den Sie bekommen? –

+0

JSON Zeichenfolge, die von asp Web-Methode zurückgegeben wird korrekt zurückgegeben (Toast msg print korrekt Daten), aber beim Konvertieren von JSON in die Klasse in Android ist die Klasse gleich Null (ich konvertiere es von Google JSON jar 2.1) – Developer

Verwandte Themen