成功登錄後,返回從服務器以下JSONObject
:改造不解析的JSONObject
{"success":true,"message":"Sign in success.","response_data":{"user_id":"24", "email_id":"[email protected]", "secret_code": "You did it!"}}
我想把response_data
信息到我的User
對象。我以前做這樣的事情:
String getResponse = jsonObject.getString("response_data");
Gson gson = new GsonBuilder()
.disableHtmlEscaping()
.setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)
.setPrettyPrinting()
.serializeNulls()
.create();
//All the data in the `response_data` is initialized in `User`
User user = gson.fromJson(getResponse, User.class);
現在我試着改造做同樣的:
初始化RestAdapter +接口:
public class ApiClient {
private static RetrofitService sRetrofitService;
public static RetrofitService getRetrofitApiClient() {
if (sRetrofitService == null) {
RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint("http://xxx.xxx.xxx.xxx/")
.build();
sRetrofitService = restAdapter.create(RetrofitService.class);
}
return sRetrofitService;
}
public interface RetrofitService {
@FormUrlEncoded
@POST("/login")
public void login(@Field("email_id") String emailId, @Field ("password") String password,
Callback <User> callback);
}
}
MainActivity:
ApiClient.getRetrofitApiClient().login(email.getText().toString(), password.getText().toString(),
new Callback<User>() {
@Override
public void success(User user, Response response) {
User user1 = user; //null
Toast.makeText(this, "user is: "+user1.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(this, "Failed Login", Toast.LENGTH_SHORT).show();
}
});
用戶:
public class User {
private String userId;
private String emailId;
private String code;
public User() {
}
... getters
... setters
}
的Retrofit
代碼MainActivity
作品,我得到我的log
這樣的響應:
{"success":true,"message":"Sign in success.","response_data":{"user_id":"24", "email_id":"[email protected]", "secret_code": "You did it!"}}
但是它不解析response_data
到我User
對象。
我該如何解決這個問題?
不,只是一個錯字不幸...我會解決這個問題。感謝您指出這一點 – user2456977