如何正确使用GSon和Retrofit

时间:2014-11-01 21:45:22

标签: android gson retrofit

我想知道如何正确使用GSon和Retrofit? 我从服务器收到了JSON:

{"tag":"getall","success":1,"error":0,"messages":[
{"message":"aaa","user_id":"111e9f66624637.88881557","time":"2014-10-17 21:27:29","usermail":"z@z.z"},{"message":"hdhxnd","user_id":"111e9f66624637.88881557","time":"2014-10-17 21:14:36","usermail":"z@z.z"},{"message":"zz","user_id":"111e9f66624637.88881557","time":"2014-10-17 21:11:15","usermail":"z@z.z"},{"message":"d","user_id":"111e9f66624637.88881557","time":"2014-10-17 18:16:35","usermail":"z@z.z"},{"message":"c","user_id":"111e9f66624637.88881557","time":"2014-10-17 18:15:16","usermail":"z@z.z"}]}

这是我的改造方法:

public interface ConnectInterface {
    @FormUrlEncoded
    @POST("/")
    void getUserMessages(@Field("tag") String first, @Field("device_id") String last, Callback<MyResponse> cb);
}

MyResponse课程:

public class MyResponse {
    public List<Messages> messages;
    public String success;
    public String error;
    public String tag;

    public class Messages {
         public String message;
        public String user_id;
        public String time;
        public String usermail;
    }
}

使用它的部分代码:

    RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(URL)
            .setErrorHandler(new MyErrorHandler())
            .build();

    ConnectInterface service = restAdapter.create(ConnectInterface.class);
    Callback<MyResponse> stringCallback = new Callback<MyResponse>() {
        @Override
        public void success(MyResponse s, Response response) {
            System.out.println(s.tag);
            for(MyResponse.Messages messages: s.messages){
                System.out.println(messages.message);
            }
        }

        @Override
        public void failure(RetrofitError error) {
            System.out.println(error.toString());
        }
    };
    service.getUserMessages("getall", "4", stringCallback);

我是以一种好的方式做到的吗?

是什么
Gson gson = new GsonBuilder()
setConverter(new GsonConverter(gson))

这些方法?

1 个答案:

答案 0 :(得分:0)

使用gson.fromJson(String, Class)如下:

Gson gson = new Gson();
MyResponse myResponse = gson.fromJson(jsonString, MyResponse.class);