2012-04-06 12 views
0
내 프로젝트를 개발 할 때, 나는 안드로이드 활동에 오류가 있었다

역 직렬화 문자열 JSON

ASP 웹 메소드로부터 반환

JSON 문자열이 제대로 돌아가지만 클래스 변환 JSON 클래스는 동일한 null의 경우 내가 클래스에 JSON 문자열

asp.net 웹 방법은 안드로이드 방법

에 유효한 JSON 문자열을 반환 변환 할 때

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(); 

문제는 (내가 구글 JSON 항아리 2.1으로 변환) ->

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

편집 추가 설명

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

:

[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; 
     } 

이 당신에 의해 클래스의 인스턴스를 간단하게 분석 할 수

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

정말로 내가 시도 할 것입니다 – Developer

+0

{ "사용자 이름": "사용자", "이메일": "[email protected]", "암호": "123", "사용자 ID": "100"} 이것은 json입니다. 문자열 – Developer

답변

0

자바에서 내 클래스입니다 :

here에서 촬영 : 지정된 객체가 제네릭 형식 인 경우

이 방법은 유용합니다. 비 제너릭 객체의 경우 fromJson (String, Class)을 대신 사용하십시오.

따라서 유형 매개 변수가 아니라 클래스를 사용해야합니다.

+0

나는 그랬지만 아무것도 바뀌지 않았다. – Developer

+0

어떤 오류가 발생 했습니까? –

+0

asp 웹 메서드에서 반환되는 json 문자열이 올바르게 반환됩니다 (Toast msg는 올바르게 데이터를 인쇄합니다)하지만 json을 Android 클래스의 클래스로 변환하면 클래스는 null입니다 (google json jar 2.1로 변환). – Developer