反序列化字符串json从asp到java类

时间:2012-04-06 10:47:48

标签: android asp.net json

当我开发项目时,我在android活动中出错了

从asp web方法返回的json字符串是正确返回但是当将json转换为类时,类等于null(我将其转换为google json jar 2.1)

   android code:


        //to call my service and get data

        ServiceCall call = new ServiceCall();

    String jsonuserdata = call.getUserData("abced@myservice.com")
            .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字符串转换为类

asp.net web方法将有效的json字符串返回给android方法

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

这是我在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;

    }

}

1 个答案:

答案 0 :(得分:0)

您只需通过以下方式解析类的实例:

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

- &GT;

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

编辑添加说明:

取自here

  

如果指定的对象是泛型类型,则此方法很有用。对于   非通用对象,改为使用fromJson(String,Class)。

所以你不应该使用type参数,而是使用类。

相关问题